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


Posted in NodeJs onMarch 03, 2015

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

*/
NodeJs 相关文章推荐
NodeJS Express框架中处理404页面一个方式
May 28 NodeJs
Nodejs实现多人同时在线移动鼠标的小游戏分享
Dec 06 NodeJs
Nodejs Stream 数据流使用手册
Apr 17 NodeJs
详解nodejs 文本操作模块-fs模块(二)
Dec 22 NodeJs
nodejs实现邮件发送服务实例分享
Mar 29 NodeJs
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
Sep 19 NodeJs
使用nodejs+express实现简单的文件上传功能
Dec 27 NodeJs
NodeJS安装图文教程
Apr 19 NodeJs
nodeJS进程管理器pm2的使用
Jan 09 NodeJs
NodeJs 模仿SIP话机注册的方法
Jun 21 NodeJs
监控Nodejs的性能实例代码
Jul 02 NodeJs
一文秒懂nodejs中的异步编程
Jan 28 NodeJs
Windows系统中安装nodejs图文教程
Feb 28 #NodeJs
NodeJS中利用Promise来封装异步函数
Feb 25 #NodeJs
NodeJS Web应用监听sock文件实例
Feb 18 #NodeJs
NodeJS使用jQuery选择器操作DOM
Feb 13 #NodeJs
NodeJs基本语法和类型
Feb 13 #NodeJs
nodejs事件的监听与触发的理解分析
Feb 12 #NodeJs
nodejs 整合kindEditor实现图片上传
Feb 03 #NodeJs
You might like
php入门学习知识点六 PHP文件的读写操作代码
2011/07/14 PHP
php安装dblib扩展,连接mssql的具体步骤
2017/03/02 PHP
PHP join()函数用法与实例讲解
2019/03/11 PHP
编写跨浏览器的javascript代码必备[js多浏览器兼容写法]
2008/10/29 Javascript
在jquery中处理带有命名空间的XML数据
2011/06/13 Javascript
学习JavaScript的最佳方法分享
2011/10/21 Javascript
jquery和ajax的关系详细介绍
2013/11/29 Javascript
纯JS实现根据CSS的class选择DOM
2014/03/22 Javascript
javascript几个易错点记录
2014/11/26 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
2016/05/11 Javascript
jquery插件bootstrapValidator数据验证详解
2016/11/09 Javascript
JavaScript如何获取到导航条中HTTP信息
2017/10/10 Javascript
python爬取安居客二手房网站数据(实例讲解)
2017/10/19 Javascript
深入研究React中setState源码
2017/11/17 Javascript
react脚手架如何配置less和ant按需加载的方法步骤
2018/11/28 Javascript
JavaScript 反射和属性赋值实例解析
2019/10/28 Javascript
javascript实现点击按钮切换轮播图功能
2020/09/23 Javascript
python使用PyGame绘制图像并保存为图片文件的方法
2015/04/24 Python
使用Python来编写HTTP服务器的超级指南
2016/02/18 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
2018/04/09 Python
python excel使用xlutils类库实现追加写功能的方法
2018/05/02 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
python 字典有序并写入json文件过程解析
2019/09/30 Python
python pyqtgraph 保存图片到本地的实例
2020/03/14 Python
美国最大的网络男装服装品牌:Bonobos
2017/05/25 全球购物
时尚圣经:The Fashion Bible
2019/03/03 全球购物
如何打开WebSphere远程debug
2014/10/10 面试题
学期评语大全
2014/04/30 职场文书
派出所正风肃纪剖析材料
2014/10/10 职场文书
入党个人总结范文
2015/03/02 职场文书
建国大业电影观后感
2015/06/01 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
美德少年事迹材料(2016推荐版)
2016/02/25 职场文书
2016年师德先进个人事迹材料
2016/02/29 职场文书
vue backtop组件的实现完整代码
2021/04/07 Vue.js
Python中itertools库的四个函数介绍
2022/04/06 Python