我們可以很簡單的獲取到請求的url,但有數(shù)據(jù)提交上來的url是十分復(fù)雜和不確定的示惊。很不利于編寫業(yè)務(wù)邏輯。所以我們就要將url拆分成我們能用的數(shù)據(jù)埃元。node的url模塊就是幫助我們對提交上來的url進行解析處理
parse(urlStr,queryString,AnalysisHost)
?解析url涝涤,返回一個url屬性對象
- urlStr: 要解析的url地址
- queryString: 解析出來的query是字符串還是查詢對象,true是對象 false是字符串
- AnalysisHost: 是否要解析出來主機名
示例代碼
var url = require('url')
var obj = url.parse('http://www.baidu.com/vdsa?ie=utf-8&word=sad',true,true)
console.log(obj);
結(jié)果:
Url組成部分:
- protocol:url的通信協(xié)議(http/https)
- slashes:如果協(xié)議protocol冒號后跟的是兩個斜杠字符(/),那么值為true
- auth:URL的用戶名與密碼部分
- host:url的主機名 “baidu.com”
- port: 端口號
- hostname: hostname是host屬性排除端口port之后的小寫的主機名部分
- hash:哈希#后面字符串包括#
- search:URL的查詢字符串部分岛杀,包括開頭的問號字符(阔拳?)
- query: 不包含問號(?)的search字符串
- pathname:URL的整個路徑部分。跟在host后面糊肠,截止問號(辨宠?)或者哈希字符(#)分隔
- path:由pathname與search組成的串接,不包含hash字符后面的東西
- href:解析后的完整的URL字符串,protocol和host都會被轉(zhuǎn)換成小寫货裹。
url.format(urlObject)
?將一個url對象格式化成url字符串
- urlObject:url對象
示例代碼
var url = require('url') var obj = { protocol: 'http:', slashes: true, host: 'www.baidu.com', hostname: 'www.baidu.com', search: '?ie=utf-8&word=sad', query: { ie: 'utf-8', word: 'sad' }, pathname: '/vdsa' } console.log(url.format(obj));
結(jié)果:
url.resolve(from,to)
?用來插入或替換URL內(nèi)容
- from 源地址
- to 需要添加或替換的標簽
示例代碼
const url = require("url");
console.log(url.resolve("/one/two/three","four"));
console.log(url.resolve("/one/two/","four"));
console.log(url.resolve("http://www.baidu.com","/topic"));
console.log(url.resolve("http://www.baidu.com/one","topic"));