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实现的一个简单udp广播服务器、客户端
Sep 25 NodeJs
快速掌握Node.js之Window下配置NodeJs环境
Mar 21 NodeJs
nodeJs爬虫获取数据简单实现代码
Mar 29 NodeJs
nodejs实现发出蜂鸣声音(系统报警声)的方法
Jan 18 NodeJs
Nodejs 发送Post请求功能(发短信验证码例子)
Feb 09 NodeJs
nodejs读写json文件的简单方法(必看)
Mar 09 NodeJs
详解nodejs微信公众号开发——4.自动回复各种消息
Apr 11 NodeJs
NodeJs实现定时任务的示例代码
Dec 05 NodeJs
使用npm安装最新版本nodejs
Jan 18 NodeJs
Nodejs实现爬虫抓取数据实例解析
Jul 05 NodeJs
nodejs实现一个word文档解析器思路详解
Aug 14 NodeJs
NodeJs入门教程之定时器和队列
Mar 08 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的超级变量$_POST获取HTML表单(HTML Form) 数据
2011/05/07 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
执行iframe中的javascript方法
2008/10/07 Javascript
javascript 中String.match()与RegExp.exec()的区别说明
2013/01/10 Javascript
JavaScript根据数据生成百分比图和柱状图的实例代码
2013/07/14 Javascript
用console.table()调试javascript
2014/09/04 Javascript
node.js中的fs.truncate方法使用说明
2014/12/15 Javascript
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
JavaScript实现表格快速变色效果代码
2015/08/19 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
2016/06/07 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
2017/08/14 Javascript
JavaScript实现简单图片轮播效果
2017/08/21 Javascript
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
基于JavaScript中字符串的match与replace方法(详解)
2017/12/04 Javascript
Vue验证码60秒倒计时功能简单实例代码
2018/06/22 Javascript
jQuery实现获取form表单内容及绑定数据到form表单操作分析
2018/07/03 jQuery
vue实现城市列表选择功能
2018/07/16 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
2018/08/13 Javascript
vue项目从node8.x升级到12.x后的问题解决
2019/10/25 Javascript
在Django中限制已登录用户的访问的方法
2015/07/23 Python
Python定时器实例代码
2017/11/01 Python
python3监控CentOS磁盘空间脚本
2018/06/21 Python
python3利用Socket实现通信的方法示例
2019/05/06 Python
在SQLite-Python中实现返回、查询中文字段的方法
2019/07/17 Python
在Django model中设置多个字段联合唯一约束的实例
2019/07/17 Python
用python对excel进行操作(读,写,修改)
2020/12/25 Python
新西兰演唱会和体育门票网站:Ticketmaster新西兰
2017/10/07 全球购物
什么是Linux虚拟文件系统VFS
2012/01/31 面试题
美容院考勤制度
2014/01/30 职场文书
外贸业务员求职信
2014/06/16 职场文书
搞笑车尾标语
2014/06/23 职场文书
2015年消费者权益日活动总结
2015/02/09 职场文书
2015国庆66周年宣传语
2015/07/14 职场文书
小学生暑假安全公约
2015/07/14 职场文书
jquery插件实现图片悬浮
2021/04/16 jQuery
中国古风插画师排行榜:夏达第一,第三是阴阳师姑获鸟皮肤创作者
2022/03/18 国漫