是的,我知道cgi.FieldStorage,但是,作为某种形式的无序字典,它不保留原始数据的顺序(见下面的证明).由于我希望将此数据与PayPal IPN一起使用,因此订单是重要的PayPal文档,其中说"......您必须按照收到的确切顺序发回内容......"
或者,os.environ.get('QUERY_STRING')看起来很完美,但它似乎只适用于GET.示例代码:(myscript.py)
#!/usr/bin/python3
import cgi, os
query = os.environ.get('QUERY_STRING') or 'no query'
print ("Content-type: text/plain\n\n")
print("query=" + query)
form = cgi.FieldStorage()
for key in form.keys():
print("\n" + key + '=' + form.getvalue(key))
Run Code Online (Sandbox Code Playgroud)
使用浏览器的GET,例如(注意foo 在 ggg 之前)
http://example.com/myscript.py/foo=bar&ggg=3&aaa=bbb&zzz=qqq
Run Code Online (Sandbox Code Playgroud)
回报
query=foo=bar&ggg=3&aaa=bbb&zzz=qqq
ggg=3
foo=bar << note that foo now comes after ggg
aaa=bbb
zzz=qqq
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用Postman进行POST
POST /myscript.py HTTP/1.1
Host: example.com
Cache-Control: no-cache
Content-Type: application/x-www-form-urlencoded
foo=bar&ggg=3&aaa=bbb&zzz=qqq
Run Code Online (Sandbox Code Playgroud)
它不返回任何查询字符串,并且正如预期的那样,FormData没有保留顺序.
query=no query
ggg=3 …Run Code Online (Sandbox Code Playgroud) 我需要使用node.js和Request以编程方式向POST提交多个值(在本例中为美国各州).
例如,HTML表单可能是
<select name="stateprov[]" id="stateprov" multiple="multiple" >
Run Code Online (Sandbox Code Playgroud)
其次是50个选项......,每个州一个
提交的表单数据看起来像
stateprov%5B%5D=CA&stateprov%5B%5D=WI
Run Code Online (Sandbox Code Playgroud)
我怎样才能使用Request?鉴于我有一系列状态,['CA','WI'},我试过了
form['stateprov[]'] = states
fails
it generates stateprov%5B%5D[0]=WI&stateprov%5B%5D[1]=CA as the output
Run Code Online (Sandbox Code Playgroud)
form ['stateprov []'] = states.join(',')也不起作用
BTW,Node人,我真的很喜欢这个项目,有很多很酷的东西,但是你的文档并不是很好.
后续:我认为问题可能是Request(https://npmjs.org/package/request)使用qs(https://npmjs.org/package/qs)对表单数据进行编码,并添加了无关的[ 0]和[1].节点的内置的queryString(http://nodejs.org/api/querystring.html#querystring_querystring_stringify_obj_sep_eq)做我想要的编码.
后续#2:与Mikeal Rogers聊天,他在支持请求方面表现出色,他基本上说我不能在请求中这样做.由于我没有利用Request的许多很酷的功能,我会看一下更基本的http.
我正在缓存可能有 1000 多个位置的经度和纬度(以及更多信息),目前使用的是 JavaScript 哈希值 {}。例如
var cache = {};
cache['Boston, MA'] = { id: someid, latlon: [lat, long] };
cache['Someotherplace, TX'] = { id: someotherid, latlon: [itslat, itslong]};
Run Code Online (Sandbox Code Playgroud)
每次出现新位置时,我都会进行地理编码并将结果添加到缓存中。我认为波士顿的纬度不会很快改变......
查找会相当快吗?我不需要快速,我没有运行亚马逊,但是随着这些数据增长到 2000 个位置,它会陷入困境吗?如果是这样,什么可能是一个不错的选择?
>npm run build在一个中等规模的 Svelte 项目上生成一个大的 public/build/bundle.js 文件。Javascript 代码被最小化为一系列单行代码
function(t){return new qr((function(e){...
但在中间(或有时在中间)每一行都是许可证的大注释块
* @license
* Copyright 2018 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
... 9 more lines
* limitations under the License.
Run Code Online (Sandbox Code Playgroud)
日期不同,2017-2019。还有一些 Microsoft 许可证。代码中散布着大约 70 个这样的许可证,使其膨胀到 800kb。
我没有搞乱汇总配置或任何东西。这是 package.json 相关部分:
"scripts": {
"build": "rollup -c",
"dev": "rollup -c -w",
"start": "sirv public"
},
"devDependencies": {
"@rollup/plugin-commonjs": "^11.0.0",
"@rollup/plugin-node-resolve": "^7.0.0",
"rollup": "^1.20.0",
"rollup-plugin-livereload": "^1.0.0",
"rollup-plugin-svelte": "^5.0.3",
"rollup-plugin-terser": "^5.1.2",
"svelte": "^3.0.0",
"svelte-mui": "^0.3.3" …Run Code Online (Sandbox Code Playgroud)