url模块
1. url.parse(urlString[,parseQueryString[,slashesDenoteHost]])
url.parse(urlString[,parseQueryString[,slashesDenoteHost]])
解析一个 URL 字符串并返回一个 URL 对象。
-
urlString
字符串 -- 要解析的URL字符串 -
parseQueryString
布尔值 -- 默认为false
,为true
时,返回的对象中,query
的属性为一个对象,可省略 -
slashesDenoteHost
布尔值 -- 解析主机处理,一般情况下使用不到
var url = require("url");
var myurl = "http://www.nodejs.org/some/url/?with=query¶m=that#about";
parsedUrl=url.parse(myurl);
// 结果
Url {
protocol: 'http:',
slashes: true,
auth: null,
host: 'www.nodejs.org',
port: null,
hostname: 'www.nodejs.org',
hash: '#about',
search: '?with=query¶m=that',
query: 'with=query¶m=that',
pathname: '/some/url/',
path: '/some/url/?with=query¶m=that',
href: 'http://www.nodejs.org/some/url/?with=query¶m=that#about'
}
var url = require("url");
var myurl = "http://www.nodejs.org/some/url/?with=query¶m=that#about";
parsedUrl=url.parse(myurl, true); // 第二个参数为true
// 结果
Url {
protocol: 'http:',
slashes: true,
auth: null,
host: 'www.nodejs.org',
port: null,
hostname: 'www.nodejs.org',
hash: '#about',
search: '?with=query¶m=that',
query: { with: 'query', param: 'that' }, // 第二个参数为true
pathname: '/some/url/',
path: '/some/url/?with=query¶m=that',
href: 'http://www.nodejs.org/some/url/?with=query¶m=that#about'
}
返回的对象说明:
protocol :请求协议
host :URL主机名已全部转换成小写,包括端口信息
auth :URL中身份验证信息部分
hostname :主机的主机名部分,已转换成小写
port :主机的端口号部分
pathname :URL的路径部分,位于主机名之后请求查询之前
search :URL的 “查询字符串” 部分,包括开头的问号
path :pathname和search连在一起
query :查询字符串中的参数部分(问号后面部分字符串),或者使用querystring.parse()解析后返回的对象
hash :URL的 “#” 后面部分(包括 # 符号)
2. url.format(urlObject)
-
urlObject
对象|字符串 -- 一个URL对象(就像url.parse()
返回的)。如果是一个字符串,则通过url.parse()
转换为一个对象。
url.format(urlObject)
的作用和url.parse(urlString[,parseQueryString[,slashesDenoteHost]])
相反
3. url.resolve(from, to)
-
from
字符串 -- 解析时相对的基本URL或者说当前路径 -
to
字符串 -- 要解析的 URL或者说想要去的往的路径
const url = require('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'
注意:只能重定向路径名,不能重定向域名
querystring模块
querystring 模块提供序列化与反序列化,转义与反转义两组功能
-
querystring.stringify(obj, [step], [eq])
将一个对象序列化为一个查询的字符串,使用&和=分别为字符串中的分隔符和赋值符。
# 如果转换的对象中存在中文,会对中文进行unicode编码
#step
修改分隔符
#eq
修改赋值符
2.querystring.parse(str, [sep], [eq], [options])
根据“&”和“=”将字符串进行分割,反序列化为JSON对象,而options包含的maxKeys默认设置为1000,如果将其设置为0则表示没这个限制。
# step
用来指明分隔符是用了哪个字符,根据分隔符来进行反序列化
# eq
用来指明赋值符是哪个字符
3.querystring.escape
,querystring.unescape
编码和解码
QueryString模块和Url模块之间的关系
url.parse(string).query
|
url.parse(string).pathname |
| |
| |
------ -------------------
http://localhost:8888/start?foo=bar&hello=world
--- -----
| |
| |
querystring(string)["foo"] |
|
querystring(string)["hello"]
网友评论