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基本语法和类型
Feb 13 NodeJs
nodejs简单实现中英文翻译
May 04 NodeJs
nodejs 实现钉钉ISV接入的加密解密方法
Jan 16 NodeJs
windows 下安装nodejs 环境变量设置
Feb 02 NodeJs
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
Mar 28 NodeJs
nodejs使用express创建一个简单web应用
Mar 31 NodeJs
nodejs连接mysql数据库简单封装示例-mysql模块
Apr 10 NodeJs
使用nodejs爬取前程无忧前端技能排行
May 06 NodeJs
nodejs实现爬取网站图片功能
Dec 14 NodeJs
nodejs微信扫码支付功能实现
Feb 17 NodeJs
nodejs中密码加密处理操作详解
Mar 20 NodeJs
nodeJs项目在阿里云的简单部署
Nov 27 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编程好学吗
2019/10/11 PHP
Javascript异步表单提交,图片上传,兼容异步模拟ajax技术
2010/05/10 Javascript
js或jquery实现页面打印可局部打印
2014/03/27 Javascript
以JavaScript来实现WordPress中的二级导航菜单的方法
2015/12/14 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
JavaScript自定义文本框光标
2017/03/05 Javascript
Bootstrap模态框插入视频的实现代码
2017/06/25 Javascript
jQuery鼠标移动图片上实现放大效果
2017/06/25 jQuery
VsCode新建VueJs项目的详细步骤
2017/09/23 Javascript
简单理解Vue中的nextTick方法
2018/01/30 Javascript
Vue.js 动态为img的src赋值方法
2018/03/14 Javascript
微信小程序列表中item左滑删除功能
2018/11/07 Javascript
ES6基础之展开语法(Spread syntax)
2019/02/21 Javascript
Nodejs中的require函数的具体使用方法
2019/04/02 NodeJs
浅析JavaScript预编译和暗示全局变量
2020/09/03 Javascript
Python version 2.7 required, which was not found in the registry
2014/08/26 Python
Python实现发送QQ邮件的封装
2017/07/14 Python
TensorFlow saver指定变量的存取
2018/03/10 Python
Python+OpenCV采集本地摄像头的视频
2019/04/25 Python
在Django model中设置多个字段联合唯一约束的实例
2019/07/17 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
django中嵌套的try-except实例
2020/05/21 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
2020/08/03 Python
python实现企业微信定时发送文本消息的实例代码
2020/11/25 Python
python 模拟登陆github的示例
2020/12/04 Python
Python 实现一个简单的web服务器
2021/01/03 Python
Python实现邮件发送的详细设置方法(遇到问题)
2021/01/18 Python
2014年小学重阳节活动策划方案
2014/09/16 职场文书
元旦标语大全
2014/10/09 职场文书
行政处罚听证告知书
2015/07/01 职场文书
企业愿景口号
2015/12/25 职场文书
《领导干部从政道德启示录》学习心得体会
2016/01/20 职场文书
创业计划书之养殖业
2019/10/11 职场文书
分布式架构Redis中有哪些数据结构及底层实现原理
2022/03/13 Redis
TV动画「神渣☆爱豆」公开第一弹主视觉图
2022/03/21 日漫