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 npm package.json中文文档
Sep 04 NodeJs
Nodejs极简入门教程(一):模块机制
Oct 25 NodeJs
NodeJs中的VM模块详解
May 06 NodeJs
nodejs创建web服务器之hello world程序
Aug 20 NodeJs
Nodejs从有门道无门菜鸟起飞必看教程
Jul 20 NodeJs
详解nodeJS之路径PATH模块
May 31 NodeJs
NodeJs实现定时任务的示例代码
Dec 05 NodeJs
Nodejs异步回调之异常处理实例分析
Jun 22 NodeJs
nodejs微信开发之接入指南
Mar 17 NodeJs
使用nodejs分离html文件里的js和css详解
Apr 12 NodeJs
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
Apr 29 NodeJs
nodejs实现聊天机器人功能
Sep 19 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/10/09 PHP
收藏的PHP常用函数 推荐收藏保存
2010/02/21 PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
2011/04/17 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
js动态创建表格,删除行列的小例子
2013/07/20 Javascript
NodeJS中Buffer模块详解
2015/01/07 NodeJs
Jquery Ajax xmlhttp请求成功问题
2015/02/04 Javascript
javascript随机显示背景图片的方法
2015/06/18 Javascript
使用Promise解决多层异步调用的简单学习心得
2016/05/17 Javascript
基于Bootstrap实现tab标签切换效果
2020/04/15 Javascript
JavaScript判断微信浏览器实例代码
2016/06/13 Javascript
jQuery动态添加与删除tr行实例代码
2016/10/18 Javascript
基于JavaScript实现微信抢红包功能
2017/07/20 Javascript
将jquery.qqFace.js表情转换成微信的字符码
2017/12/01 jQuery
一步步教会你微信小程序的登录鉴权
2018/04/09 Javascript
JavaScript面向对象编程小游戏---贪吃蛇代码实例
2019/05/15 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
2019/08/12 Javascript
[01:14:35]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第一局
2016/02/26 DOTA
pyqt4教程之实现半透明的天气预报界面示例
2014/03/02 Python
Python中文竖排显示的方法
2015/07/28 Python
pandas多级分组实现排序的方法
2018/04/20 Python
python生成1行四列全2矩阵的方法
2018/08/04 Python
Win10下python3.5和python2.7环境变量配置教程
2018/09/18 Python
Python 中list ,set,dict的大规模查找效率对比详解
2019/10/11 Python
pytorch中的weight-initilzation用法
2020/06/24 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
2020/12/22 Python
Yankee Candle官网:美国最畅销蜡烛品牌之一
2020/01/05 全球购物
戴森西班牙官网:Dyson西班牙
2020/02/04 全球购物
12月红领巾广播稿
2014/02/13 职场文书
机械专业技术员求职信
2014/06/14 职场文书
统计学教授推荐信
2014/09/18 职场文书
个人剖析材料及整改措施
2014/10/07 职场文书
入党介绍人意见范文
2015/06/01 职场文书
KVM基础命令详解
2022/04/30 Servers
Mysql InnoDB 的内存逻辑架构
2022/05/06 MySQL