url模块
- url.parse
- url.format
- url.resolve
url.parse(string)
将url字符串地址转换为一个对象:
const url = require('url');
const urlString = 'https://nodejs.org/zh-cn/'
const urlObj = url.parse(urlString )
console.log(urlObj)
//打印结果
Url {
protocol: 'https:',
slashes: true,
auth: null,
host: 'nodejs.org',
port: null,
hostname: 'nodejs.org',
hash: null,
search: null,
query: null,
pathname: '/zh-cn/',
path: '/zh-cn/',
href: 'https://nodejs.org/zh-cn/' }
- protocal: url协议
- auth: 用户认证
- host: 主机
- port: 端口
- hostname: 主机名
- hash: 片段部分,也就是URL#之后的部分
- search: url中HTTP GET的信息,包含了 ?
- query: 和 search一样,但是不包含 ?
- pathname: 跟在host之后的整个文件路径。但是不包含 ? 及 ?之后的字符串。
- path: 和pathname一样,但是包含 ? 及之后的字符串,但是不包含hash
- href: 原始的url
url.format(urlObj)
format方法与parse方法恰恰相反,根据对象生成url字符串
const url = require('url');
var urlObj = {
protocol: 'https:',
slashes: true,
auth: null,
host: 'nodejs.org',
port: null,
hostname: 'nodejs.org',
hash: null,
search: null,
query: null,
pathname: '/zh-cn/',
path: '/zh-cn/',
href: 'https://nodejs.org/zh-cn/'
};
const urlString = url.format(urlObj);
console.log(urlString);
url.resolve(string,string)
用于拼接URL,返回拼接后的url字符串
const url = require('url');
let baseUrl = 'https://www.baidu.com/';
let configUrl = '/search';
const httpUrl = url.resolve(baseUrl, configUrl);
console.log(httpUrl);
//打印结果
https://www.baidu.com/search
querystring模块
querystring模块用于处理query字符串,包含以下方法:
- parse、decode
- escape
- unescape
- encode、stringify
parse与decode
parse与decode方法是一样的,都用于将query字符串解析成对象
var qs = require('querystring');
qs.parse('a=1&b=2&c=3');
// 结果
{
a:'1',
b:'2',
c:'3'
}
//参数:parse('string','分割符','赋值符','配置对象{}')
//分隔符(默认为&),
//赋值符(默认为=),
//配置对象,
//配置对象又有两个可选参数
//maxKeys(最多能解析多少个键值对)
//decodeURIComponent(用于解码非utf-8编码字符串,默认querystring.unescape)。
stringify、encode
用于将对象转换成query字符串。如果属性值不是string、boolean和number中的一种,它就不能序列化,返回内容中的关键字对应的值为空。
var obj = {a:1, b:2, func: function(){console.log("func")}}
qs.stringify(obj)
qs.encode(obj)
//结果
'a=1&b=2&func='
//参数同上 'string','分割符','赋值符','配置对象{}'
encode
参数编码
unescape
参数解码