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的子进程(child_process)调用系统命令的方法分享
Jun 05 NodeJs
Nodejs学习笔记之Stream模块
Jan 13 NodeJs
Nodejs中的this详解
Mar 26 NodeJs
基于Nodejs利用socket.io实现多人聊天室
Feb 22 NodeJs
详解nodeJS中读写文件方法的区别
Mar 06 NodeJs
nodejs个人博客开发第二步 入口文件
Apr 12 NodeJs
详解Windows下安装Nodejs步骤
May 18 NodeJs
详解nodeJS之二进制buffer对象
Jun 03 NodeJs
浅析 NodeJs 的几种文件路径
Jun 07 NodeJs
nodejs中request库使用HTTPS代理的方法
Apr 30 NodeJs
NodeJs 实现简单WebSocket即时通讯的示例代码
Aug 05 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
php 获取可变函数参数的函数
2009/08/26 PHP
PHP通过curl获取接口URL的数据方法
2018/05/31 PHP
Dojo 学习要点
2010/09/03 Javascript
JavaScript OOP面向对象介绍
2010/12/02 Javascript
JavaScript语言核心数据类型和变量使用介绍
2013/08/23 Javascript
jQuery中获取checkbox选中项等操作及注意事项
2013/11/24 Javascript
Jquery的Tabs内容轮换效果实现代码,几行搞定
2014/02/12 Javascript
页面按钮禁用与解除禁用的方法
2014/02/19 Javascript
node.js中的console.error方法使用说明
2014/12/10 Javascript
javascript数组去重的方法汇总
2015/04/14 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
AngularJS ng-style中使用filter
2016/09/21 Javascript
移动web开发之touch事件实例详解
2018/01/17 Javascript
原生JS实现瀑布流插件
2018/02/06 Javascript
vue 实现的树形菜的实例代码
2018/03/19 Javascript
解决vue-cli + webpack 新建项目出错的问题
2018/03/20 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
koa2实现登录注册功能的示例代码
2018/12/03 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
2019/03/28 Javascript
JS实现省市县三级下拉联动
2020/04/10 Javascript
零基础写python爬虫之抓取糗事百科代码分享
2014/11/06 Python
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
Python 限制线程的最大数量的方法(Semaphore)
2019/02/22 Python
python argparse传入布尔参数false不生效的解决
2020/04/20 Python
Myprotein瑞士官方网站:运动营养和健身网上商店
2019/09/25 全球购物
PHP面试题大全
2015/10/16 面试题
大学生护理专业自荐信
2013/10/03 职场文书
幼儿园国庆节活动方案
2014/02/01 职场文书
诚信承诺书模板
2014/05/26 职场文书
上课睡觉检讨书300字
2014/11/18 职场文书
2015年评职称工作总结范文
2015/04/20 职场文书
校运会通讯稿
2015/07/18 职场文书
学校少先队工作总结
2015/08/12 职场文书
2016党员发展对象培训心得体会
2016/01/08 职场文书
梳理总结Python开发中需要摒弃的18个坏习惯
2022/01/22 Python