📜  Node.js 查询字符串完整参考(1)

📅  最后修改于: 2023-12-03 15:17:57.214000             🧑  作者: Mango

Node.js 查询字符串完整参考

在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的查询字符串模块可轻松构建、解析并转义查询字符串。