Node中的url模块和querystring模块怎么使用
更新时间:2023-12-071. url模块的使用
url模块是Node内置的模块,用于解析、格式化URL,它提供了以下的一些方法:
- url.parse(urlString[, parseQueryString[, slashesDenoteHost]]): 将一个 URL 字符串转换成一个 URL 对象。
- url.format(urlObject): 将 URL 对象格式化成一个 URL 字符串
- url.resolve(from, to): 解析一个相对URL,返回完整的URL
下面是一个例子:
const url = require('url');
// 解析 URL 字符串
const urlString = 'https://www.baidu.com/s?wd=node.js&rsv_spt=1&rsv_iqid=0xef2e3dad000f57b2&issp=1&f=8&rsv_bp=1&rsv_idx=2';
const urlObj = url.parse(urlString, true);
console.log(urlObj);
/* 返回结果:
Url {
protocol: 'https:',
slashes: true,
auth: null,
host: 'www.baidu.com',
port: null,
...
*/
// 格式化 URL 对象
const newUrlObj = {
protocol: 'https:',
slashes: true,
host: 'www.baidu.com',
pathname: '/s',
query: {
wd: 'node.js',
rsv_spt: '1',
rsv_iqid: '0xef2e3dad000f57b2',
issp: '1',
f: '8',
rsv_bp: '1',
rsv_idx: '2'
}
};
const newUrlString = url.format(newUrlObj);
console.log(newUrlString); // https://www.baidu.com/s?wd=node.js&rsv_spt=1&rsv_iqid=0xef2e3dad000f57b2&issp=1&f=8&rsv_bp=1&rsv_idx=2
// 解析相对 URL
const from = 'https://www.baidu.com/';
const to = 's?wd=node.js&rsv_spt=1&rsv_iqid=0xef2e3dad000f57b2&issp=1&f=8&rsv_bp=1&rsv_idx=2';
const resolvedUrl = url.resolve(from, to);
console.log(resolvedUrl); // https://www.baidu.com/s?wd=node.js&rsv_spt=1&rsv_iqid=0xef2e3dad000f57b2&issp=1&f=8&rsv_bp=1&rsv_idx=2
2. querystring模块的使用
querystring模块是Node内置的模块,用于解析和格式化 URL 查询字符串(query string)。
- querystring.parse(str[, sep[, eq[, options]]]): 将一个查询字符串解析成一个对象
- querystring.stringify(obj[, sep[, eq[, options]]]): 将一个对象序列化成一个查询字符串
下面是一个例子:
const querystring = require('querystring');
// 解析查询字符串
const query = 'name=Kobe&age=42&occupation=basketball%20player';
const obj = querystring.parse(query);
console.log(obj);
/* 返回结果:
{
name: 'Kobe',
age: '42',
occupation: 'basketball player'
}
*/
// 格式化查询字符串
const newQuery = {
name: 'Lebron',
age: '36',
occupation: 'basketball player'
};
const queryString = querystring.stringify(newQuery);
console.log(queryString); // name=Lebron&age=36&occupation=basketball%20player
3. URL和query string的结合使用
在实际开发中,我们经常需要将URL和query string结合起来使用,下面是一个例子:
const url = require('url');
const querystring = require('querystring');
const urlString = 'https://www.baidu.com/search?q=node.js';
const urlObj = url.parse(urlString);
const { query } = urlObj;
const queryObj = querystring.parse(query);
console.log(queryObj); // { q: 'node.js' }
4. 总结
url模块和querystring模块是Node内置的两个模块,用于解析和格式化URL和URL查询字符串。url模块提供了url.parse、url.format、url.resolve三个方法,用于解析一个URL字符串、格式化URL对象和解析相对URL字符串等。querystring模块提供了querystring.parse、querystring.stringify两个方法,用于解析和格式化查询字符串。在实际开发中,我们需要结合使用URL和query string模块来实现一些功能。以上提供的方法只是常用的几种,更多的方法可以查阅官方文档。