nodejs URL模块操作URL相关方法介绍

2020-06-17 06:54:56易采站长站整理

http.createServer(function (request, response) {
    var tmp = request.url; // => “/foo/bar?a=b”
    url.parse(tmp);
    /* =>
    { protocol: null,
      slashes: null,
      auth: null,
      host: null,
      port: null,
      hostname: null,
      hash: null,
      search: ‘?a=b’,
      query: ‘a=b’,
      pathname: ‘/foo/bar’,
      path: ‘/foo/bar?a=b’,
      href: ‘/foo/bar?a=b’ }
    */
}).listen(80);
.parse方法还支持第二个和第三个布尔类型可选参数。第二个参数等于true时,该方法返回的URL对象中,query字段不再是一个字符串,而是一个经过querystring模块转换后的参数对象。第三个参数等于true时,该方法可以正确解析不带协议头的URL,例如//www.example.com/foo/bar。

反过来,format方法允许将一个URL对象转换为URL字符串,示例如下。

url.format({
    protocol: ‘http:’,
    host: ‘www.example.com’,
    pathname: ‘/p/a/t/h’,
    search: ‘query=string’
});
/* =>
‘http://www.example.com/p/a/t/h?query=string’
*/
另外,.resolve方法可以用于拼接URL,示例如下。

url.resolve(‘http://www.example.com/foo/bar’, ‘../baz’);
/* =>
 
http://www.example.com/baz
 
*/
Query String

querystring模块用于实现URL参数字符串与参数对象的互相转换,示例如下。

querystring.parse(‘foo=bar&baz=qux&baz=quux&corge’);
/* =>
{ foo: ‘bar’, baz: [‘qux’, ‘quux’], corge: ” }
*/
 
querystring.stringify({ foo: ‘bar’, baz: [‘qux’, ‘quux’], corge: ” });
/* =>
‘foo=bar&baz=qux&baz=quux&corge=’
*/