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 url验证(url-valid)的使用方法
Nov 18 NodeJs
nodejs中使用多线程编程的方法实例
Mar 24 NodeJs
ubuntu下安装nodejs以及升级的办法
May 08 NodeJs
深入浅析NodeJs并发异步的回调处理
Dec 21 NodeJs
Nodejs中session的简单使用及通过session实现身份验证的方法
Feb 04 NodeJs
NodeJS的Promise的用法解析
May 05 NodeJs
NodeJs下的测试框架Mocha的简单介绍
Feb 22 NodeJs
nodejs集成sqlite使用示例
Jun 05 NodeJs
nodejs连接mysql数据库及基本知识点详解
Mar 20 NodeJs
NodeJs搭建本地服务器之使用手机访问的实例讲解
May 12 NodeJs
NodeJs项目中关闭ESLint的方法
Aug 09 NodeJs
Nodejs实现微信分账的示例代码
Jan 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
Zend Framework教程之Zend_Db_Table用法详解
2016/03/21 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
2017/06/12 PHP
php提交表单时保留多个空格及换行的文本样式的方法
2017/06/20 PHP
PHP中常见的密码处理方式和建议总结
2018/10/14 PHP
ExtJs GridPanel简单的增删改实现代码
2010/08/26 Javascript
用JQuery实现表格隔行变色和突出显示当前行的代码
2012/02/10 Javascript
file模式访问网页时iframe高度自适应解决方案
2013/01/16 Javascript
判断ie的两种简单方法
2013/08/12 Javascript
jQuery实现的多选框多级联动插件
2014/05/02 Javascript
JavaScript italics方法入门实例(把字符串显示为斜体)
2014/10/17 Javascript
JavaScript编程中的Promise使用大全
2015/07/28 Javascript
js实现iPhone界面风格的单选框和复选框按钮实例
2015/08/18 Javascript
JS 日期与时间戮相互转化的简单实例
2016/06/22 Javascript
js字符串与Unicode编码互相转换
2017/05/17 Javascript
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
vue cli3 调用百度翻译API翻译页面的实现示例
2019/09/13 Javascript
详解JavaScript之ES5的继承
2020/07/08 Javascript
浅谈vue中document.getElementById()拿到的是原值的问题
2020/07/26 Javascript
vue 动态生成拓扑图的示例
2021/01/03 Vue.js
[03:02]辉夜杯主赛事第二日 每日之星
2015/12/27 DOTA
使用Python脚本将文字转换为图片的实例分享
2015/08/29 Python
浅谈Python中chr、unichr、ord字符函数之间的对比
2016/06/16 Python
对python 矩阵转置transpose的实例讲解
2018/04/17 Python
PYQT5 vscode联合操作qtdesigner的方法
2020/03/24 Python
python实现移动木板小游戏
2020/10/09 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
2021/03/03 Python
自考自我鉴定范文
2013/10/30 职场文书
求职推荐信范文
2013/12/01 职场文书
工程安全员岗位职责
2014/03/09 职场文书
2014年教师政治学习材料
2014/06/02 职场文书
安全生产目标管理责任书
2014/07/25 职场文书
2015年环卫工作总结
2015/04/28 职场文书
2016年春季运动会加油稿
2015/07/22 职场文书
送给教师们,到底该如何写好教学反思?
2019/07/02 职场文书
七年级之开学家长寄语35句
2019/09/05 职场文书
php访问对象中的成员的实例方法
2021/11/17 PHP