不要在查询字符串stringify中编码网址

Ion*_*zău 3 node.js query-string

是否有任何选项qs.stringify,将编码的网址吗?

$ node
> var qs = require("querystring");
undefined
> qs.stringify({"url": "http://domain.com"});
'url=http%3A%2F%2Fdomain.com'
Run Code Online (Sandbox Code Playgroud)

我想要下面的输出:

'url=http://domain.com'
Run Code Online (Sandbox Code Playgroud)

Ifc*_*0o1 6

再次迟到的回答,但是...
\nqs.stringify()encode:false实际上禁用 URI 编码的选项。

\n

Qs.stringify 文档

\n

您还可以在 Nodejs 模块中使用它,request/request如下所示:

\n
request({\n  url: \'http://url.domain\'\n  qs: {\n    qs1: \'thisIsNotEncodedInTheRequest%20://\xd0\xb0\xd1\x81\xd0\xb4\'\n  },\n  qsStringifyOptions: {\n    // encoding: false /** (OLD VERSION - I think is deprecated yet) */\n    encode: false\n  }\n});\n
Run Code Online (Sandbox Code Playgroud)\n

  • 编码(encode)与编码(encoding)相反,它似乎已经改变了,或者总是如此。所以`编码:假` (2认同)

小智 5

这有点晚了,但对于下一个人,你可以这样做:querystring.unescape(myString)


Bra*_*ody 3

不直接,不。不过,如果您没有转义查询字符串中的值,那么使用查询字符串几乎没有任何好处。头脑也只是这样做:var q = 'url=http://domain.com'

编辑:从源代码来看,唯一的方法是更改​​(即覆盖)querystring escape() 函数的行为 - 这是可能的,但不是一个好主意。