require(‘url’).parse(url, parseQueryString, slashesDenoteHost);
默认情况url.parse(url)等价于url.parse(url, false, false);
parseQueryString : 控制解析的 Url {……} 中的 query 字段的值是否为 JSON格式,即{……};还是普通字符串格式,即 ‘……’。
slashesDenoteHost : 当url是 ‘http://’ 或 ‘ftp://’ 等标志的协议前缀打头的,或直接以地址打头,如 ‘127.0.0.1’ 或 ‘localhost’ 时候是没有区别的;当且仅当以2个斜杠打头的时候,比如 ‘//127.0.0.1’ 才有区别。这时候,如果其值为true,则第一个单个 ‘/’ 之前的部分被解析为 ‘host’ 和 ‘hostname’,如 ” host : ‘127.0.0.1’ “,如果为false,包括2个反斜杠在内的所有字符串被解析为pathname。
测试代码如下:
var path = '//localhost/www/index?name=bob&password=123456';
console.log('path = ' + path);
console.log();
var query = url.parse(path);
var params = JSON.stringify(query);
console.log("url.parse(path)");
console.log(query);
console.log("JSON.stringify(query)");
console.log(params);
console.log();
var query = url.parse(path, true);
var params = JSON.stringify(query);
console.log("url.parse(path, true)");
console.log(query);
console.log("JSON.stringify(query)");
console.log(params);
console.log();
var query = url.parse(path, false);
var params = JSON.stringify(query);
console.log("url.parse(path, false)");
console.log(query);
console.log("JSON.stringify(query)");
console.log(params);
console.log();
var query = url.parse(path, true, true);
var params = JSON.stringify(query);
console.log("url.parse(path, true, true)");
console.log(query);
console.log("JSON.stringify(query)");
console.log(params);
console.log();
var query = url.parse(path, true, false);
var params = JSON.stringify(query);
console.log("url.parse(path, true, false)");
console.log(query);
console.log("JSON.stringify(query)");
console.log(params);
console.log();
var query = url.parse(path, false, true);
var params = JSON.stringify(query);
console.log("url.parse(path, false, true)");
console.log(query);
console.log("JSON.stringify(query)");
console.log(params);
console.log();
var query = url.parse(path, false, false);
var params = JSON.stringify(query);
console.log("url.parse(path, false, false)");
console.log(query);
console.log("JSON.stringify(query)");
console.log(params);
console.log();