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获取本机内网和外网ip地址的实现代码
Jun 01 NodeJs
Nodejs全栈框架StrongLoop推荐
Nov 09 NodeJs
NodeJS学习笔记之(Url,QueryString,Path)模块
Jan 13 NodeJs
NodeJs基本语法和类型
Feb 13 NodeJs
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
Mar 28 NodeJs
详解nodejs微信公众号开发——1.接入微信公众号
Apr 10 NodeJs
NodeJs模拟登陆正方教务
Apr 28 NodeJs
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
Sep 06 NodeJs
基于nodejs实现微信支付功能
Dec 20 NodeJs
详解Nodejs内存治理
May 13 NodeJs
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
Jul 31 NodeJs
详解nodejs http请求相关总结
Mar 31 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
ueditor 1.2.6 使用方法说明
2013/07/24 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
PHP文件上传判断file是否己选择上传文件的方法
2014/11/10 PHP
php求一个网段开始与结束IP地址的方法
2015/07/09 PHP
深入探究PHP的多进程编程方法
2015/08/18 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
又一个图片自动缩小的JS代码
2007/03/10 Javascript
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
2015/07/28 Javascript
用JavaScript判断CSS浏览器类型前缀的两种方法
2015/10/08 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
javascript创建含数字字母的随机字符串方法总结
2016/08/01 Javascript
jQuery EasyUI ProgressBar进度条组件
2017/02/28 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
node.js 如何监视文件变化
2020/09/01 Javascript
[01:37]DOTA2超级联赛专访ChuaN 传奇般的电竞之路
2013/06/19 DOTA
举例讲解Python面向对象编程中类的继承
2016/06/17 Python
python的多重继承的理解
2017/08/06 Python
python使用threading获取线程函数返回值的实现方法
2017/11/15 Python
python 显示数组全部元素的方法
2018/04/19 Python
75条笑死人的知乎神回复,用60行代码就爬完了
2019/05/06 Python
python进程和线程用法知识点总结
2019/05/28 Python
在python中将list分段并保存为array类型的方法
2019/07/15 Python
Django 创建/删除用户的示例代码
2019/07/24 Python
Python3多线程版TCP端口扫描器
2019/08/31 Python
Python如何操作docker redis过程解析
2020/08/10 Python
python3中数组逆序输出方法
2020/12/01 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
基于DOM+CSS3实现OrgChart组织结构图插件
2016/03/02 HTML / CSS
英国最大的网上药品商店:Chemist Direct
2017/12/16 全球购物
音乐专业自荐信
2014/02/07 职场文书
人事专员的岗位职责
2014/03/01 职场文书
解除劳动合同协议书范本2014
2014/09/25 职场文书
责任书范本大全
2015/05/11 职场文书
话题作文之成长
2019/12/09 职场文书
使用react+redux实现计数器功能及遇到问题
2021/06/02 Javascript