04 url & querystring
node专门为了方便处理url地址封装的模块 url 模块和 相关的 querystring 模块
url
url 中的方法
url.parse(url.string, parseQueryString, slashesDenoteHost)
- parseQueryString 默认为 false , 表示返回的对象中的query 属性不进行解析和解码, 如果为 true 则返回一个对象并且解码
const url = require('url')
const str = 'http://Chyingp:HelloWorld@ke.qq.com:8080/index.html?nick=%E7%A8%8B%E5%BA%8F%E7%8C%BF%E5%B0%8F%E5%8D%A1#part=1';
const obj = url.parse(str)
console.log(obj)
// 打印结果
/*
{
protocol: 'http:',
slashes: true,
auth: 'Chyingp:HelloWorld',
host: 'ke.qq.com:8080',
port: '8080',
hostname: 'ke.qq.com',
hash: '#part=1',
search: '?nick=%E7%A8%8B%E5%BA%8F%E7%8C%BF%E5%B0%8F%E5%8D%A1',
query: 'nick=%E7%A8%8B%E5%BA%8F%E7%8C%BF%E5%B0%8F%E5%8D%A1',
pathname: '/index.html',
path: '/index.html?nick=%E7%A8%8B%E5%BA%8F%E7%8C%BF%E5%B0%8F%E5%8D%A1',
href: 'http://Chyingp:HelloWorld@ke.qq.com:8080/index.html?nick=%E7%A8%8B%E5%BA%8F%E7%8C%BF%E5%B0%8F%E5%8D%A1#part=1' }
*/
console.log(url.parse(str, true))
/*
{
protocol: 'http:',
slashes: true,
auth: 'Chyingp:HelloWorld',
host: 'ke.qq.com:8080',
port: '8080',
hostname: 'ke.qq.com',
hash: '#part=1',
search: '?nick=%E7%A8%8B%E5%BA%8F%E7%8C%BF%E5%B0%8F%E5%8D%A1',
query: { nick: '程序猿小卡' },
pathname: '/index.html',
path: '/index.html?nick=%E7%A8%8B%E5%BA%8F%E7%8C%BF%E5%B0%8F%E5%8D%A1',
href: 'http://Chyingp:HelloWorld@ke.qq.com:8080/index.html?nick=%E7%A8%8B%E5%BA%8F%E7%8C%BF%E5%B0%8F%E5%8D%A1#part=1' }
*/
其他两个方法为 url.format(urlObj) 和 url.resove(form, to)
querystring
querystring 模块专门用来解析url查询参数的, 常用的两个方法
querystring.parse()
const querystring = require('querystring')
const str = 'abc=123&def=4556'
const obj = qureystring.parse(str)
console.log(JSON.stringify(obj, null, 4))
/*
{
"abc": "123",
"def": "4556"
}
*/
querystring.stringify()
const obj = {
"abc": "123",
"def": "456"
}
const str = querystring.stringify(obj)
console.log(str)
// "abc=123&def=456"