首頁  >  文章  >  web前端  >  nodejs URL模組操作URL相關方法介紹_node.js

nodejs URL模組操作URL相關方法介紹_node.js

WBOY
WBOY原創
2016-05-16 16:11:361068瀏覽

url模組

處理HTTP請求時url模組使用率超高,因為此模組允許解析URL、產生URL,以及拼接URL。首先我們來看看一個完整的URL的各組成部分。

複製程式碼 程式碼如下:

                         href
-------------------------------------------------- ---------------
                            host                                -------------------------------------------------------
 http: // user:pass @ host.com : 8080 /p/a/t/h ?query=string #hash
-----    ---------   --------   ---- -------- ------------- --- --
protocol     auth     hostname   port pathname     search     hash
                                                                          

我們可以使用.parse方法來將一個URL字串轉換為URL​​對象,範例如下。


複製程式碼 程式碼如下: 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方法的不一定要是一個完整的URL,例如在HTTP伺服器回呼函數中,request.url不包含協定頭和域名,但同樣可以用.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方法也支援第二個和第三個布林類型可選參數。第二個參數等於true時,此方法傳回的URL物件中,query欄位不再是一個字串,而是經過querystring模組轉換後的參數物件。第三個參數等於true時,此方法可以正確解析不含協議頭的URL,例如//www.example.com/foo/bar。
反過來,format方法允許將一個URL物件轉換為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模組用來實作URL參數字串與參數物件的互相轉換,範例如下。

複製程式碼 程式碼如下:

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='
*/
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn