当前位置: 首页 > 编程笔记 >

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

欧阳正卿
2023-03-14
本文向大家介绍nodejs URL模块操作URL相关方法介绍,包括了nodejs URL模块操作URL相关方法介绍的使用技巧和注意事项,需要的朋友参考一下

url模块

处理HTTP请求时url模块使用率超高,因为该模块允许解析URL、生成URL,以及拼接URL。首先我们来看看一个完整的URL的各组成部分。


                         href

 -----------------------------------------------------------------

                            host              path

                      --------------- ----------------------------

 http: // user:pass @ host.com : 8080 /p/a/t/h ?query=string #hash

 -----    ---------   --------   ---- -------- ------------- -----

protocol     auth     hostname   port pathname     search     hash

                                                ------------

                                                   query


我们可以使用.parse方法来将一个URL字符串转换为URL对象,示例如下。

url.parse('http://user:pass@host.com:8080/p/a/t/h?query=string#hash');

/* =>

{ protocol: 'http:',

  auth: 'user:pass',

  host: 'host.com:8080',

  port: '8080',

  hostname: 'host.com',

  hash: '#hash',

  search: '?query=string',

  query: 'query=string',

  pathname: '/p/a/t/h',

  path: '/p/a/t/h?query=string',

  href: 'http://user:pass@host.com:8080/p/a/t/h?query=string#hash' }

*/


传给.parse方法的不一定要是一个完整的URL,例如在HTTP服务器回调函数中,request.url不包含协议头和域名,但同样可以用.parse方法解析。

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='

*/

 类似资料:
  • 本文向大家介绍详解Python文本操作相关模块,包括了详解Python文本操作相关模块的使用技巧和注意事项,需要的朋友参考一下 详解Python文本操作相关模块 linecache——通过使用缓存在内部尝试优化以达到高效从任何文件中读出任何行。 主要方法: dircache——定义了一个函数,使用缓存读取目录列表、使用目录的mtime来实现缓存失效。此外还定义了标注目录的方法。 主要方法: fil

  • 简介 核心模块 额外模块 共同的返回值 Facts Status 其他的共同返回 ansible 附带了很多可以直接在远端主机或者通过 Playbooks 执行的模块 用户也可以写出属于自己的模块.这些模块可以控制系统的资源 ,像服务,包管理,文件,或执行系统命令. See also Introduction To Ad-Hoc Commands Examples of using modules

  • 本文向大家介绍python threading模块操作多线程介绍,包括了python threading模块操作多线程介绍的使用技巧和注意事项,需要的朋友参考一下 python是支持多线程的,并且是native的线程。主要是通过thread和threading这两个模块来实现的。thread是比较底层的模块,threading是对thread做了一些包装的,可以更加方便的被使用。这里需要提一下的是

  • 本文向大家介绍node.js中http模块和url模块的简单介绍,包括了node.js中http模块和url模块的简单介绍的使用技巧和注意事项,需要的朋友参考一下 前言 本文主要给大家介绍了关于node.js中http模块与url模块的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 一、http模块的简单介绍 node.js当中的http内置模块可以用于创建http服务

  • 问题内容: 同事一直在吹捧Maven的奇迹及其神奇的依赖关系,但是我发现它在我认为是显而易见的用途上失败了。 假设我有一个带有主POM的根文件夹。 然后在我下面有一些项目,分别称为A和B B需要A,因此B文件夹中的POM中具有适当的依赖项 现在,回到根文件夹中的配置文件中,我指定要构建B。 当我执行通常的mvn全新安装时,由于未构建A而失败。 我的朋友告诉我,我必须在根目录的主配置文件中同时指定A

  • 本文向大家介绍Python bsddb模块操作Berkeley DB数据库介绍,包括了Python bsddb模块操作Berkeley DB数据库介绍的使用技巧和注意事项,需要的朋友参考一下 bsddb模块是用来操作bdb的模块,bdb是著名的Berkeley DB,它的性能非常好,mysql的存储后端引擎都支持bdb的方式。这里简单介绍一些关于bsddb的使用方法。 bdb不同于一般的关系数据库