nodejs url模塊
nodejs中用戶url格式化和反格式化模塊
用于url解析、處理等操作的解決方案
1.url.parse(urlString[, parseQueryString[, slashesDenoteHost]])
-
urlString
<string> 要解析的 URL 字符串土思。 -
parseQueryString
<boolean> 如果為true
履澳,則query
屬性總會通過querystring
模塊的parse()
方法生成一個對象笤妙。 如果為false
嘶居,則返回的 URL 對象上的query
屬性會是一個未解析母蛛、未解碼的字符串氛驮。 默認為false
恋日。 -
slashesDenoteHost
<boolean> 如果為true
箭窜,則//
之后至下一個/
之前的字符串會被解析作為host
毯焕。 例如,//foo/bar
會被解析為{host: 'foo', pathname: '/bar'}
而不是{pathname: '//foo/bar'}
磺樱。 默認為false
纳猫。
url.parse() 方法會解析一個 URL 字符串并返回一個 URL 對象。
如果urlString不是字符串將會拋出TypeError竹捉。
如果auth屬性存在但無法編碼則拋出URIError芜辕。
示例1:
var url = require("url")
var myurl="http://www.nodejs.org/some/url/?with=query¶m=that#about"
parsedUrl=url.parse(myurl)
結(jié)果
{ 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'
}
當(dāng)parse方法第二個參數(shù)為true時,結(jié)果如下
parsedUrl=url.parse(myurl,true)
{ 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' },
pathname: '/some/url/',
path: '/some/url/?with=query¶m=that',
href: 'http://www.nodejs.org/some/url/?with=query¶m=that#about' }
2.url.format(urlObject)
-
urlObject
<Object> | <string> 一個 URL 對象(就像url.parse()
返回的)块差。 如果是一個字符串侵续,則通過url.parse()
轉(zhuǎn)換為一個對象。
url.format()
方法返回一個從 urlObject
格式化后的 URL 字符串憾儒。
如果 urlObject
不是一個對象或字符串询兴,則 url.format()
拋出 TypeError
。
示例
var url=require('url');
var obj1={ protocol: 'http:',
slashes: true,
auth: null,
host: 'calc.gongjuji.net',
port: null,
hostname: 'calc.gongjuji.net',
hash: '#one#two',
search: '?name=zhangsan&age=18',
query: 'name=zhangsan&age=18',
pathname: '/byte/',
path: '/byte/?name=zhangsan&age=18',
href: 'http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two'
};
var url1=url.format(obj1);
console.log(url1);//http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two
//請求參數(shù)為為json對象
var obj2={ protocol: 'http:',
slashes: true,
auth: null,
host: 'calc.gongjuji.net',
port: null,
hostname: 'calc.gongjuji.net',
hash: '#one#two',
search: '?name=zhangsan&age=18',
query: { name: 'zhangsan', age: '18' }, //頁面參數(shù)部分起趾,已經(jīng)解析成對象了
pathname: '/byte/',
path: '/byte/?name=zhangsan&age=18',
href: 'http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two' };
var url2=url.format(obj2);
console.log(url2); //http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two
//缺少參數(shù)的情況
var obj3={ protocol: null,
slashes: true,
auth: null,
host: 'www.gongjuji.net',
port: null,
hostname: 'www.gongjuji.net',
hash: '#one',
search: '?name=zhangsan',
query: { name: 'zhangsan' },
pathname: '/byte/',
path: '/byte/?name=zhangsan',
href: '//www.gongjuji.net/byte/?name=zhangsan#one' };
var url3=url.format(obj3);
console.log(url3);//www.gongjuji.net/byte/?name=zhangsan#one
3.url.resolve(from, to)
url.resolve()
方法會以一種 Web 瀏覽器解析超鏈接的方式把一個目標(biāo) URL 解析成相對于一個基礎(chǔ) 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'
參考:
http://www.reibang.com/p/fb5278d02cc4
http://nodejs.cn/api/url.html#url_url_parse_urlstring_parsequerystring_slashesdenotehost
https://blog.csdn.net/u011127019/article/details/52350172