url模塊
我們可以使用.parse方法來將一個URL字符串轉換為URL對象,示例如下。
1. URL各部分說明
var url = require('url'); //加載url模塊 url.parse('http://www.baidu.com');
返回的結果為:
{ protocol: 'http:', slashes: null, auth: null, host: null, port: null, hostname: null, hash: null, search: null, query: null, pathname: 'www.baidu.com', path: 'www.baidu.com', href: 'http://www.baidu.com' }
parse函數的第二個參數是布爾類型,當參數為true時,會將查詢條件query也解析成json格式的對象
parse函數的第三個參數也是布爾類型的,當參數為true,解析時會將url的”//”和第一個”/”之間的部分解析為主機名,示例如下:
var url = require('url'); url.parse('http://www.baidu.com/news',false,true);
返回的結果:
{ protocol: 'http:', slashes: true, auth: null, host: 'www.baidu.com', port: null, hostname: 'www.baidu.com', hash: null, search: null, query: null, pathname: '/news', path: '/news', href: 'http://www.baidu.com/news' }
protocol: 請求協議
host: URL主機名已全部轉換成小寫, 包括端口信息
auth:URL中身份驗證信息部分
hostname:主機的主機名部分, 已轉換成小寫
port: 主機的端口號部分
pathname: URL的路徑部分,位於主機名之后請求查詢之前
search: URL 的“查詢字符串”部分,包括開頭的問號。
path: pathname 和 search 連在一起。
query: 查詢字符串中的參數部分(問號后面部分字符串),或者使用 querystring.parse() 解析后返回的對象。
hash: URL 的 “#” 后面部分(包括 # 符號)
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
*/
querystring模塊
"QueryString" 模塊用於實現URL參數字符串與參數對象的互相轉換,來個栗子,如下所示:
var url = require('url');
var qs = require('querystring');
var queryUrl = " http://localhost:8888/bb?name=bigbear&memo=helloworld" ;
queryUrl = url.parse(queryUrl).query ;
console.log(queryUrl) ;
console.log(qs.parse(queryUrl)) ;
var qs = require('querystring');
var queryUrl = " http://localhost:8888/bb?name=bigbear&memo=helloworld" ;
queryUrl = url.parse(queryUrl).query ;
console.log(queryUrl) ;
console.log(qs.parse(queryUrl)) ;
運行結果·如下:
name=bigbear&memo=helloworld
{
name: 'bigbear',
memo: 'helloworld'
}
{
name: 'bigbear',
memo: 'helloworld'
}