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); // 第二個參數(shù)為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' }, // 第二個參數(shù)為true
pathname: '/some/url/',
path: '/some/url/?with=query¶m=that',
href: 'http://www.nodejs.org/some/url/?with=query¶m=that#about'
}
返回的對象說明:
? protocol :請求協(xié)議
? host :URL主機名已全部轉換成小寫,包括端口信息
? auth :URL中身份驗證信息部分
? hostname :主機的主機名部分,已轉換成小寫
? port :主機的端口號部分
? pathname :URL的路徑部分,位于主機名之后請求查詢之前
? search :URL的 “查詢字符串” 部分,包括開頭的問號
? path :pathname和search連在一起
? query :查詢字符串中的參數(shù)部分(問號后面部分字符串),或者使用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])
根據(jù)“&”和“=”將字符串進行分割,反序列化為JSON對象,而options包含的maxKeys默認設置為1000,如果將其設置為0則表示沒這個限制。
? # step 用來指明分隔符是用了哪個字符,根據(jù)分隔符來進行反序列化
? # 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"]