📅  最后修改于: 2023-12-03 15:17:57.214000             🧑  作者: Mango
在Web开发中,查询字符串是作为URL的一部分传递的一组键值对。节点提供了构建和解析查询字符串的内置模块,这使得处理URL非常容易。
本文将详细介绍Node.js中使用查询字符串的方法。
使用Node.js内置querystring模块可以构建查询字符串。以下是使用querystring.stringify()
方法将对象转换为查询字符串的示例:
const querystring = require('querystring');
const params = {
name: 'John',
age: 30,
skills: ['JavaScript', 'Node.js']
};
const queryString = querystring.stringify(params);
console.log(queryString);
// 输出:name=John&age=30&skills=JavaScript&skills=Node.js
在上面的例子中,querystring.stringify()
方法将对象转换为查询字符串。重要的是,重复的参数键(如skills
)会被转换为重复的名称序列。
默认情况下,该方法使用=
作为分隔符,并使用&
分隔参数。如果需要自定义这些分隔符,可以通过传递选项参数进行配置:
const options = {
delimiter: ';',
equals: ':'
};
const queryString = querystring.stringify(params, options);
console.log(queryString);
// 输出:name:John;age:30;skills:JavaScript;skills:Node.js
使用Node.js内置模块querystring模块可以解析查询字符串。以下是使用querystring.parse()
方法将查询字符串转换为对象的示例:
const querystring = require('querystring');
const queryString = 'name=John&age=30&skills=JavaScript&skills=Node.js';
const params = querystring.parse(queryString);
console.log(params);
// 输出:{ name: 'John', age: '30', skills: [ 'JavaScript', 'Node.js' ] }
在上面的例子中,querystring.parse()
方法解析查询字符串并将其转换为对象。注意,所有值都是以字符串形式返回,即使它们看起来像数字,也是字符串。
如果要解析嵌套对象,则需要使用另一个名为querystring.parse()
方法的变体。以下是使用querystring.parse()
方法解析嵌套查询字符串的示例:
const querystring = require('querystring');
const queryString = 'person[name]=John&person[age]=30&person[skills]=JavaScript&person[skills]=Node.js';
const params = querystring.parse(queryString);
console.log(params);
// 输出:{ person: { name: 'John', age: '30', skills: [ 'JavaScript', 'Node.js' ] } }
使用querystring.escape()
和querystring.unescape()
方法可以转义和取消转义查询字符串中的特殊字符。以下是使用这些方法的示例:
const querystring = require('querystring');
const queryString = 'name=Jöhn&city=Los Angeles';
const encoded = querystring.escape(queryString);
console.log(encoded);
// 输出:name%3DJ%C3%B6hn%26city%3DLos%20Angeles
const decoded = querystring.unescape(encoded);
console.log(decoded);
// 输出:name=Jöhn&city=Los Angeles
在上面的例子中,querystring.escape()
方法将查询字符串中的特殊字符编码为URL安全形式。然而,querystring.unescape()
方法取消编码,以便读取人类可读的值。
以上是构建和解析查询字符串的完整参考。使用Node.js的查询字符串模块可轻松构建、解析并转义查询字符串。