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入门详解(多篇文章结合)
Mar 07 NodeJs
基于 Docker 开发 NodeJS 应用
Jul 30 NodeJs
轻松创建nodejs服务器(9):实现非阻塞操作
Dec 18 NodeJs
详解nodejs与javascript中的aes加密
May 22 NodeJs
详解NodeJs支付宝移动支付签名及验签
Jan 06 NodeJs
NodeJS配置HTTPS服务实例分享
Feb 19 NodeJs
nodejs个人博客开发第七步 后台登陆
Apr 12 NodeJs
Windows下使用Nodejs运行js的方法
Sep 02 NodeJs
NodeJS服务器实现gzip压缩的示例代码
Oct 12 NodeJs
nodejs实现获取本地文件夹下图片信息功能示例
Jun 22 NodeJs
NodeJs实现简易WEB上传下载服务器
Aug 10 NodeJs
NodeJs crypto加密制作token的实现代码
Nov 15 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 之入门篇
2006/12/04 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
2011/10/31 PHP
php实现根据IP地址获取其所在省市的方法
2015/04/30 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
2020/03/18 PHP
javascript Excel操作知识点
2009/04/24 Javascript
『jQuery』名称冲突使用noConflict方法解决
2013/04/22 Javascript
javascrip关于继承的小例子
2013/05/10 Javascript
解析Javascript中大括号“{}”的多义性
2013/12/02 Javascript
javascript从定义到执行 你不知道的那些事
2016/01/04 Javascript
深入理解Node.js 事件循环和回调函数
2016/11/02 Javascript
JavaScript实现倒计时跳转页面功能【实用】
2016/12/13 Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
2017/02/23 Javascript
Vue.js教程之axios与网络传输的学习实践
2017/04/29 Javascript
浅谈Angular4实现热加载开发旅程
2017/09/08 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
2018/03/08 Javascript
详解使用VUE搭建后台管理系统(vue-cli更新至3.0)
2018/08/22 Javascript
vue forEach循环数组拿到自己想要的数据方法
2018/09/21 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
2019/07/19 Javascript
基于Element封装一个表格组件tableList的使用方法
2020/06/29 Javascript
原生js拖拽功能制作滑动条实例代码
2021/02/05 Javascript
pycharm 使用心得(一)安装和首次使用
2014/06/05 Python
9种python web 程序的部署方式小结
2014/06/30 Python
SQLite3中文编码 Python的实现
2017/01/11 Python
Python实现调度算法代码详解
2017/12/01 Python
Python笔记之代理模式
2019/11/20 Python
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
解决H5的a标签的download属性下载service上的文件出现跨域问题
2019/07/16 HTML / CSS
澳大利亚旅游网站:Lastminute
2017/08/07 全球购物
Marlies Dekkers内衣荷兰官方网店:荷兰奢侈内衣品牌
2020/03/27 全球购物
学校做一个有道德的人活动方案
2014/08/23 职场文书
知识就是力量演讲稿
2014/09/13 职场文书
师德师风学习材料
2014/12/19 职场文书
开票证明
2015/06/23 职场文书
机械生产实习心得体会
2016/01/22 职场文书
2016年村党支部公开承诺书
2016/03/24 职场文书
2016年“6.26”禁毒宣传月系列活动总结
2016/04/05 职场文书