一、引入querystring
模块
首先,你需要在你的Node.js文件中引入querystring
模块。
const querystring = require('querystring');
二、querystring
模块的主要方法
querystring
模块提供了四个主要方法:parse
、stringify
、escape
和unescape
。
1. querystring.parse(str, [sep], [eq], [options])
这个方法用于将一个查询字符串反序列化为一个对象。
-
str
:要解析的查询字符串。 -
sep
(可选):用于分割键值对的字符或字符串,默认为&
。 -
eq
(可选):用于分割键和值的字符或字符串,默认为=
。 -
options
(可选):一个对象,可以设置maxKeys
和decodeURIComponent
属性。-
maxKeys
:指定解析键值对的最大值,默认为1000。如果设置为0,则取消解析的数量限制。 -
decodeURIComponent
:用于对含有%
的字符串进行解码的函数,默认为querystring.unescape
。
-
示例:
const querystring = require('querystring');
const queryStr = 'name=John&age=30';
const parsed = querystring.parse(queryStr);
console.log(parsed); // 输出: { name: 'John', age: '30' }
2. querystring.stringify(obj, [sep], [eq], [options])
这个方法用于将一个对象序列化为一个查询字符串。
-
obj
:要序列化的对象。 -
sep
(可选):用于连接键值对的字符或字符串,默认为&
。 -
eq
(可选):用于连接键和值的字符或字符串,默认为=
。 -
options
(可选):一个对象,可以设置encodeURIComponent
属性。-
encodeURIComponent
:用于对URL不安全的字符进行编码的函数,默认为querystring.escape
。
-
示例:
const querystring = require('querystring');
const obj = { name: 'John', age: 30 };
const serialized = querystring.stringify(obj);
console.log(serialized); // 输出: 'name=John&age=30'
3. querystring.escape(str)
这个方法用于对传入的字符串进行URL百分号编码。
示例:
const querystring = require('querystring');
const str = 'name=慕白';
const escaped = querystring.escape(str);
console.log(escaped); // 输出: 'name%3D%E6%85%95%E7%99%BD'
4. querystring.unescape(str)
这个方法用于对含有%
的字符串进行解码。
示例:
const querystring = require('querystring');
const str = 'name%3D%E6%85%95%E7%99%BD';
const unescaped = querystring.unescape(str);
console.log(unescaped); // 输出: 'name=慕白'
三、注意事项
-
querystring.parse
方法返回的对象不继承自JavaScript的Object
,因此典型的Object
方法如obj.toString()
、obj.hasOwnProperty()
等无法使用。 -
querystring.escape
和querystring.unescape
方法通常不被直接使用,它们主要是供querystring.stringify
和querystring.parse
方法内部使用的。不过,你可以通过给这两个方法赋值一个函数来重写编码和解码的实现。
四、总结
querystring
模块是Node.js中处理URL查询字符串的核心工具,它提供了简单的API用于解析和格式化URL查询字符串。通过掌握这些API,你可以方便地在Node.js应用中处理GET请求参数等场景。