nodejs URL模塊操作URL相關(guān)方法介紹
url模塊
處理HTTP請(qǐng)求時(shí)url模塊使用率超高,因?yàn)樵撃K允許解析URL、生成URL,以及拼接URL。首先我們來看看一個(gè)完整的URL的各組成部分。
href
-----------------------------------------------------------------
host path
--------------- ----------------------------
http: // user:pass @ host.com : 8080 /p/a/t/h ?query=string #hash
----- --------- -------- ---- -------- ------------- -----
protocol auth hostname port pathname search hash
------------
query
我們可以使用.parse方法來將一個(gè)URL字符串轉(zhuǎn)換為URL對(duì)象,示例如下。
url.parse('http://user:pass@host.com:8080/p/a/t/h?query=string#hash');
/* =>
{ 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' }
*/
傳給.parse方法的不一定要是一個(gè)完整的URL,例如在HTTP服務(wù)器回調(diào)函數(shù)中,request.url不包含協(xié)議頭和域名,但同樣可以用.parse方法解析。
http.createServer(function (request, response) {
var tmp = request.url; // => "/foo/bar?a=b"
url.parse(tmp);
/* =>
{ protocol: null,
slashes: null,
auth: null,
host: null,
port: null,
hostname: null,
hash: null,
search: '?a=b',
query: 'a=b',
pathname: '/foo/bar',
path: '/foo/bar?a=b',
href: '/foo/bar?a=b' }
*/
}).listen(80);
.parse方法還支持第二個(gè)和第三個(gè)布爾類型可選參數(shù)。第二個(gè)參數(shù)等于true時(shí),該方法返回的URL對(duì)象中,query字段不再是一個(gè)字符串,而是一個(gè)經(jīng)過querystring模塊轉(zhuǎn)換后的參數(shù)對(duì)象。第三個(gè)參數(shù)等于true時(shí),該方法可以正確解析不帶協(xié)議頭的URL,例如//www.example.com/foo/bar。
反過來,format方法允許將一個(gè)URL對(duì)象轉(zhuǎn)換為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'
*/
另外,.resolve方法可以用于拼接URL,示例如下。
url.resolve('http://www.example.com/foo/bar', '../baz');
/* =>
http://www.example.com/baz
*/
Query String
querystring模塊用于實(shí)現(xiàn)URL參數(shù)字符串與參數(shù)對(duì)象的互相轉(zhuǎn)換,示例如下。
querystring.parse('foo=bar&baz=qux&baz=quux&corge');
/* =>
{ foo: 'bar', baz: ['qux', 'quux'], corge: '' }
*/
querystring.stringify({ foo: 'bar', baz: ['qux', 'quux'], corge: '' });
/* =>
'foo=bar&baz=qux&baz=quux&corge='
*/
相關(guān)文章
輕松創(chuàng)建nodejs服務(wù)器(2):nodejs服務(wù)器的構(gòu)成分析
這篇文章主要介紹了輕松創(chuàng)建nodejs服務(wù)器(2):nodejs服務(wù)器的構(gòu)成分析,本文是對(duì)第一節(jié)中簡(jiǎn)單服務(wù)器的代碼進(jìn)行分析總結(jié),需要的朋友可以參考下2014-12-12Windows上node.js的多版本管理工具用法實(shí)例分析
這篇文章主要介紹了Windows上node.js的多版本管理工具用法,結(jié)合實(shí)例形式分析了Windows平臺(tái)上node.js多版本管理工具nvm-windows的相關(guān)使用技巧,需要的朋友可以參考下2019-11-11詳解node HTTP請(qǐng)求客戶端 - Request
Request是一個(gè)Node.jsNPM模塊,它是一個(gè)HTTP客戶端,使用簡(jiǎn)單功能確十分強(qiáng)大2017-05-05使用nodejs開發(fā)cli項(xiàng)目實(shí)例
這篇文章主要介紹了使用nodejs開發(fā)cli項(xiàng)目實(shí)例,本文講解使用generator-cli-starter實(shí)現(xiàn)cli項(xiàng)目的開發(fā),需要的朋友可以參考下2015-06-06理解nodejs的stream和pipe機(jī)制的原理和實(shí)現(xiàn)
本篇文章主要介紹了理解nodejs的stream和pipe機(jī)制的原理和實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08Puppeteer 爬取動(dòng)態(tài)生成的網(wǎng)頁實(shí)戰(zhàn)
這篇文章主要介紹了Puppeteer 爬取動(dòng)態(tài)生成的網(wǎng)頁實(shí)戰(zhàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-11-11