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极简入门教程(二):定时器
Oct 25 NodeJs
NodeJS使用jQuery选择器操作DOM
Feb 13 NodeJs
nodejs实现HTTPS发起POST请求
Apr 23 NodeJs
Nodejs抓取html页面内容(推荐)
Aug 11 NodeJs
浅谈Nodejs中的作用域问题
Dec 26 NodeJs
Highcharts+NodeJS搭建数据可视化平台示例
Jan 01 NodeJs
NodeJS处理Express中异步错误
Mar 26 NodeJs
NodeJs测试框架Mocha的安装与使用
Mar 28 NodeJs
让nodeJS支持ES6的词法----babel的安装和使用方法
Jul 31 NodeJs
nodejs实现大文件(在线视频)的读取
Oct 16 NodeJs
PHPStorm中如何对nodejs项目进行单元测试详解
Feb 28 NodeJs
NodeJS配置CORS实现过程详解
Dec 02 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中替换换行符的几种方法小结
2012/10/15 PHP
php环境无法上传文件的解决方法
2014/04/30 PHP
PHP中常用的字符串格式化函数总结
2014/11/19 PHP
php自动给网址加上链接的方法
2015/06/02 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
2016/11/05 PHP
php5.x禁用eval的操作方法
2018/10/19 PHP
纯CSS3实现质感细腻丝滑按钮
2021/03/09 HTML / CSS
JS解决url传值出现中文乱码的另类办法
2013/04/08 Javascript
JS Date函数整理方便使用
2013/10/23 Javascript
jquery跨域请求示例分享(jquery发送ajax请求)
2014/03/25 Javascript
jQuery中ajax的load()方法用法实例
2014/12/26 Javascript
ECMAScript6中Map/WeakMap详解
2015/06/12 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
2016/05/12 Javascript
通用无限极下拉菜单的实现代码
2016/05/31 Javascript
javascript使用 concat 方法对数组进行合并的方法
2016/09/08 Javascript
JS前端加密算法示例
2016/12/22 Javascript
JavaScript实现翻页功能(附效果图)
2017/02/16 Javascript
微信小程序返回多级页面的实现方法
2017/10/27 Javascript
Map与WeakMap类型在JavaScript中的使用详解
2020/11/18 Javascript
vue前端和Django后端如何查询一定时间段内的数据
2021/02/28 Vue.js
[03:32]2014DOTA2西雅图邀请赛 CIS外卡赛赛前black专访
2014/07/09 DOTA
python机器学习库scikit-learn:SVR的基本应用
2019/06/26 Python
Python编程中类与类的关系详解
2019/08/08 Python
Python流程控制 if else实现解析
2019/09/02 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
python图形界面开发之wxPython树控件使用方法详解
2020/02/24 Python
python使用openpyxl操作excel的方法步骤
2020/05/28 Python
基于python实现可视化生成二维码工具
2020/07/08 Python
财务人员的自我评价范文
2014/03/03 职场文书
开展读书活动总结
2014/06/30 职场文书
三分钟自我介绍演讲稿
2014/08/21 职场文书
法院四风对照检查材料思想汇报
2014/10/06 职场文书
肖申克救赎观后感
2015/06/02 职场文书
使用python如何删除同一文件夹下相似的图片
2021/05/07 Python
微信小程序APP的生命周期及页面的生命周期
2022/04/19 Javascript
Mysql的Table doesn't exist问题及解决
2022/12/24 MySQL