我如何在Node.js中对URl进行编码?

TIM*_*MEX 294 javascript url node.js

我想对URL进行编码:

SELECT name FROM user WHERE uid = me() 
Run Code Online (Sandbox Code Playgroud)

我必须为此下载模块吗?我已经有了请求模块.

Joe*_*Joe 557

你可以使用JavaScript encodeURIComponent:

encodeURIComponent('select * from table where i()')
Run Code Online (Sandbox Code Playgroud)

  • 要保存访问者的搜索信息,是的...`decodeURIComponent`是如何对编码的URI进行解码。别客气。 (16认同)
  • 它帮助我使用 NodeJS 以孟加拉语进行查询。谢谢你! (3认同)

nic*_*ten 124

querystring您正在寻找内置模块:

var querystring = require("querystring");
var result = querystring.stringify({query: "SELECT name FROM user WHERE uid = me()"});
console.log(result);
#prints 'query=SELECT%20name%20FROM%20user%20WHERE%20uid%20%3D%20me()'
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下,我们只能传递一个不是字符串的映射,所以如果arg是一个字符串,那么你将看不到结果.因此,如果您有要编码的字符串,请使用encodeURIComponent(). (4认同)
  • 这对于编码 JSON 对象和 POST-ing 它们更好。 (3认同)

Kam*_*rul 46

使用的escape功能querystring.它生成一个URL安全字符串.

var escaped_str = require('querystring').escape('Photo on 30-11-12 at 8.09 AM #2.jpg');
console.log(escaped_str);
// prints 'Photo%20on%2030-11-12%20at%208.09%20AM%20%232.jpg'
Run Code Online (Sandbox Code Playgroud)

  • https://nodejs.org/api/querystring.html#querystring_querystring_escape_str说:"querystring.sesify()`使用``querystring.escape()`方法,通常不会直接使用它." (4认同)

Fli*_*imm 17

请注意,URI编码适用于查询部分,但它对域不利.域使用punycode进行编码.您需要像URI.js这样的库来在URI和IRI(国际化资源标识符)之间进行转换.

如果您计划稍后将该字符串用作查询字符串,这是正确的:

> encodeURIComponent("http://examplé.org/rosé?rosé=rosé")
'http%3A%2F%2Fexampl%C3%A9.org%2Fros%C3%A9%3Fros%C3%A9%3Dros%C3%A9'
Run Code Online (Sandbox Code Playgroud)

如果你不想ASCII字符像/,:?进行转义,使用encodeURI来代替:

> encodeURI("http://examplé.org/rosé?rosé=rosé")
'http://exampl%C3%A9.org/ros%C3%A9?ros%C3%A9=ros%C3%A9'
Run Code Online (Sandbox Code Playgroud)

但是,对于其他用例,您可能需要使用uri-js:

> var URI = require("uri-js");
undefined
> URI.serialize(URI.parse("http://examplé.org/rosé?rosé=rosé"))
'http://xn--exampl-gva.org/ros%C3%A9?ros%C3%A9=ros%C3%A9'
Run Code Online (Sandbox Code Playgroud)


Joh*_*ner 11

encodeURIComponent(string)会这样做:

encodeURIComponent("Robert'); DROP TABLE Students;--")
//>> "Robert')%3B%20DROP%20TABLE%20Students%3B--"
Run Code Online (Sandbox Code Playgroud)

在查询字符串中传递SQL可能不是一个好的计划,

看到这一个

  • 我们叫他小鲍比·表斯 :-P (4认同)