NodeJs》》url地址参数 解析 URLSearchParams querystring
Node.js 的 querystring 模块(在较新版本中已被 URLSearchParams 取代)Node.js v17 中被标记为"遗留" (Legacy)
// 1. 基本解析和格式化
const querystring = require('querystring');// 解析查询字符串
const query = 'name=John&age=30&city=New+York';
const parsed = querystring.parse(query);
console.log(parsed);
// 输出: { name: 'John', age: '30', city: 'New York' }// 将对象转换为查询字符串
const obj = { name: 'Jane', age: '25', occupation: 'developer' };
const stringified = querystring.stringify(obj);
console.log(stringified);
// 输出: 'name=Jane&age=25&occupation=developer'
// 2. 处理数组参数
// 解析带数组的查询字符串
const querystring = require('querystring');
const arrayQuery = 'colors=red&colors=green&colors=blue';
const parsedArray = querystring.parse(arrayQuery);
console.log(parsedArray);
// 输出: { colors: ['red', 'green', 'blue'] }// 将数组转换为查询字符串
const arrayObj = { fruits: ['apple', 'banana', 'orange'] };
const arrayString = querystring.stringify(arrayObj);
console.log(arrayString);
// 输出: 'fruits=apple&fruits=banana&fruits=orange'
// 编码 解码
// 编码特殊字符
const querystring = require('querystring');
const toEncode = 'query=hello world&lang=中文';
const encoded = querystring.escape(toEncode);
console.log(encoded);
// 输出: 'query%3Dhello%20world%26lang%3D%E4%B8%AD%E6%96%87'// 解码
const toDecode = 'query%3Dhello%20world%26lang%3D%E4%B8%AD%E6%96%87';
const decoded = querystring.unescape(toDecode);
console.log(decoded);
// 输出: 'query=hello world&lang=中文'
// 实际应用 - Express 路由中的查询参数处理
const express = require('express');
const querystring = require('querystring');
const app = express();app.get('/search', (req, res) => {// 从URL获取查询字符串const queryString = req.url.split('?')[1] || '';const params = querystring.parse(queryString);console.log('搜索参数:', params);res.send(`搜索条件: ${JSON.stringify(params)}`);
});app.listen(3000, () => {console.log('服务器运行在 http://localhost:3000');
});// 访问 http://localhost:3000/search?q=nodejs&page=2&sort=desc
// 输出: 搜索条件: {"q":"nodejs","page":"2","sort":"desc"}
现代替代方案 - URLSearchParams
URLSearchParams
// 更现代的API (推荐)
const { URLSearchParams } = require('url');// 从查询字符串创建
const params = new URLSearchParams('name=John&age=30');
console.log(params.get('name')); // 输出: John
console.log(params.toString()); // 输出: name=John&age=30// 添加参数
params.append('city', 'New York');
console.log(params.toString());
// 输出: name=John&age=30&city=New+York// 遍历所有参数
for (const [name, value] of params) {console.log(`${name}: ${value}`);
}
URL
官方资料