url模块
该模块允许解析URL、生成URL,以及拼接URL。
url.parse()
url.parse(urlStr [, parseQueryString][, slashesDenoteHost])
urlStr为要解析的url字符串;parseQueryString参数等于true时,该方法返回的URL对象中,query字段不再是一个字符串,而是一个经过querystring模块转换后的参数对象;slashesDenoteHost参数等于true时,该方法可以正确解析不带协议头的URL
url.parse()方法用于解析URL对象,解析后返回一个JSON对象。
var url = require('url');
var urlStr = 'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'
url.parse(urlStr);
/*
{
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'
}
*/
参数说明
protocol: 请求协议
host: URL主机名已全部转换成小写, 包括端口信息
auth:URL中身份验证信息部分
hostname:主机的主机名部分, 已转换成小写
port: 主机的端口号部分
pathname: URL的路径部分,位于主机名之后请求查询之前
search: URL 的“查询字符串”部分,包括开头的问号。
path: pathname 和 search 连在一起。
query: 查询字符串中的参数部分(问号后面部分字符串),或者使用 querystring.parse() 解析后返回的对象。
hash: URL 的 “#” 后面部分(包括 # 符号)
url.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'
*/
url.resolve()
可以用于拼接URL
url.resolve('/one/two/three', 'four') // '/one/two/four'
url.resolve('http://example.com/', '/one') // 'http://example.com/one'
url.resolve('http://example.com/one', '/two') // 'http://example.com/two'
url解析图例
url.parse(string).query
|
url.parse(string).pathname |
| |
| |
------ -------------------
http://localhost:8888/start?foo=bar&hello=world