nodejs URL模块操作URL相关方法介绍
来源: 阅读:701 次 日期:2015-03-06 10:28:04
温馨提示: 小编为您整理了“nodejs URL模块操作URL相关方法介绍”,方便广大网友查阅!

这篇文章主要介绍了nodejs URL模块操作URL相关方法介绍,本文讲解了parse方法、format方法、querystring方法等,需要的朋友可以参考下

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');

/* =>

*/

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='

*/

更多信息请查看IT技术专栏

更多信息请查看脚本栏目
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2025国考·省考课程试听报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map