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打包工具整合到鼠标右键的方法
May 11 NodeJs
Nodejs实现的一个简单udp广播服务器、客户端
Sep 25 NodeJs
Nodejs学习笔记之NET模块
Jan 13 NodeJs
基于html5和nodejs相结合实现websocket即使通讯
Nov 19 NodeJs
windows 下安装nodejs 环境变量设置
Feb 02 NodeJs
docker中编译nodejs并使用nginx启动
Jun 23 NodeJs
NodeJS自定义模块写法(详解)
Jun 27 NodeJs
NodeJS爬虫实例之糗事百科
Dec 14 NodeJs
nodejs 日志模块winston的使用方法
May 02 NodeJs
nodejs初始化init的示例代码
Oct 10 NodeJs
Nodejs模块的调用操作实例分析
Dec 25 NodeJs
NodeJs之word文件生成与解析的实现代码
Apr 01 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
「OVERLORD」动画重要删减!雅儿贝德的背叛?至尊猎杀队结成
2020/04/09 日漫
PHP中copy on write写时复制机制介绍
2014/05/13 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
2015/09/28 PHP
详解yii2实现分库分表的方案与思路
2017/02/03 PHP
thinkPHP5.0框架简单配置作用域的方法
2017/03/17 PHP
javascript 复杂的嵌套环境中输出单引号和双引号
2009/05/26 Javascript
CSS和JS标签style属性对照表(方便js开发的朋友)
2010/11/11 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
30个经典的jQuery代码开发技巧
2014/12/15 Javascript
js实现的牛顿摆效果
2015/03/31 Javascript
javascript实现链接单选效果的方法
2015/05/13 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
js结合正则实现国内手机号段校验
2015/06/19 Javascript
JavaScript中的this,call,apply使用及区别详解
2016/01/29 Javascript
javascript动态获取登录时间和在线时长
2016/02/25 Javascript
纯jQuery实现前端分页功能
2017/03/23 jQuery
Vue下滚动到页面底部无限加载数据的示例代码
2018/04/22 Javascript
vue中使用axios post上传头像/图片并实时显示到页面的方法
2018/09/27 Javascript
使用JavaScrip模拟实现仿京东搜索框功能
2019/10/16 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
vue实现购物车案例
2020/05/30 Javascript
JavaScript 实现继承的几种方式
2021/02/19 Javascript
跟老齐学Python之坑爹的字符编码
2014/09/28 Python
python实现学生信息管理系统
2020/04/05 Python
python中使用iterrows()对dataframe进行遍历的实例
2018/06/09 Python
Django Rest framework之权限的实现示例
2018/12/17 Python
python实现转圈打印矩阵
2019/03/02 Python
Python进阶:生成器 懒人版本的迭代器详解
2019/06/29 Python
Python实现图片批量加入水印代码实例
2019/11/30 Python
Html5让容器充满屏幕高度或自适应剩余高度的布局实现
2020/05/14 HTML / CSS
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
自主招生自荐信范文
2013/12/04 职场文书
民族团结先进个人材料
2014/02/05 职场文书
祖国在我心中演讲稿200字
2014/08/28 职场文书
2014年乡镇人大工作总结
2014/11/25 职场文书
酒店总经理岗位职责
2015/04/01 职场文书