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 相关文章推荐
windows系统下简单nodejs安装及环境配置
Jan 08 NodeJs
nodejs教程之制作一个简单的文章发布系统
Nov 21 NodeJs
轻松创建nodejs服务器(10):处理POST请求
Dec 18 NodeJs
Nodejs下DNS缓存问题浅析
Nov 16 NodeJs
nodejs 实现钉钉ISV接入的加密解密方法
Jan 16 NodeJs
详解nodejs微信公众号开发——3.封装消息响应模块
Apr 10 NodeJs
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
Jul 31 NodeJs
NodeJs实现简单的爬虫功能案例分析
Dec 05 NodeJs
详解Nodejs get获取远程服务器接口数据
Mar 26 NodeJs
监控Nodejs的性能实例代码
Jul 02 NodeJs
Nodejs + sequelize 实现增删改查操作
Nov 07 NodeJs
浅谈JS和Nodejs中的事件驱动
May 05 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
用libTemplate实现静态网页的生成
2006/10/09 PHP
php skymvc 一款轻量、简单的php
2011/06/28 PHP
PHP命名空间(Namespace)的使用详解
2013/05/04 PHP
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
JavaScript 继承详解(三)
2009/07/13 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
2013/08/09 Javascript
javascript结合CSS实现苹果开关按钮特效
2015/04/07 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
2016/03/01 Javascript
JavaScript中获取纯正的undefined的方法
2016/03/06 Javascript
再次谈论Javascript中的this
2016/06/23 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
JS实现禁止高频率连续点击的方法【基于ES6语法】
2017/04/25 Javascript
详解Vue2.0组件的继承与扩展
2018/11/23 Javascript
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
Python时间戳使用和相互转换详解
2017/12/11 Python
浅谈Django+Gunicorn+Nginx部署之路
2019/09/11 Python
Matplotlib使用Cursor实现UI定位的示例代码
2020/03/12 Python
python excel和yaml文件的读取封装
2021/01/12 Python
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
英国和世界各地预订便宜的酒店:LateRooms.com
2019/05/05 全球购物
JRE、JDK、JVM之间的关系怎样
2012/05/16 面试题
日本语毕业生自荐信
2014/02/01 职场文书
幼儿园父亲节活动方案
2014/03/11 职场文书
年终总结会议主持词
2014/03/17 职场文书
新年团拜会主持词
2014/04/02 职场文书
中药学专业毕业生推荐信
2014/07/10 职场文书
2014年销售内勤工作总结
2014/12/01 职场文书
医院科室评语
2015/01/04 职场文书
仓库保管员岗位职责
2015/02/09 职场文书
2015团员个人年度总结
2015/11/24 职场文书
如何撰写出一份完美的商业计划书?
2019/07/12 职场文书
R9700摩机记
2022/04/05 无线电
如何优化vue打包文件过大
2022/04/13 Vue.js
python中的random模块和相关函数详解
2022/04/22 Python