一、前言
querystring
是 Node.js 中的一个内置模块,主要用于处理 URL 查询字符串。它提供了一些实用的方法来解析和格式化查询字符串,使得在处理 HTTP 请求中的查询参数等场景时非常方便。还可以防止sql注入
二、解析查询字符串(parse
方法)
功能:将 URL 查询字符串解析为一个 JavaScript 对象。
语法 :querystring.parse(str[, sep[, eq[, options]]])
str
:要解析的查询字符串。sep
(可选):用于分隔查询字符串中的键值对的字符,默认是&
。eq
(可选):用于分隔键和值的字符,默认是=
。options
(可选):一个包含decodeURIComponent
函数的对象,用于解码查询字符串中的字符。如果没有提供这个函数,默认使用querystring.unescape()
。
示例:
js
const querystring = require('querystring');
const query = 'name=John&age=30';
const parsed = querystring.parse(query);
console.log(parsed);
// 输出: { name: 'John', age: '30' }
三、格式化对象为查询字符串(stringify
方法)
功能:将一个 JavaScript 对象格式化为 URL 查询字符串。
语法 :querystring.stringify(obj[, sep[, eq[, options]]])
obj
:要格式化的对象。sep
(可选):用于分隔键值对的字符,默认是&
。eq
(可选):用于分隔键和值的字符,默认是=
。options
(可选):一个包含encodeURIComponent
函数的对象,用于编码对象中的字符。如果没有提供这个函数,默认使用querystring.escape()
。
示例:
js
const querystring = require('querystring');
const obj = { name: 'John', age: 30 };
const str = querystring.stringify(obj);
console.log(str);
// 输出: name=John&age=30
四、编码(escape
方法)和解码(unescape
方法)
可以使用编码解码的方式防止sql注入
escape
方法
功能:对字符串进行 URL 编码,将特殊字符转换为它们的十六进制编码形式。
示例:
js
const querystring = require('querystring');
const str = 'a b c';
const escaped = querystring.escape(str);
console.log(escaped);
// 输出: a%20b%20c
unescape
方法
功能:对经过 URL 编码的字符串进行解码,将十六进制编码形式的字符转换回原始字符。
示例:
js
const querystring = require('querystring');
const str = 'a%20b%20c';
const unescaped = querystring.unescape(str);
console.log(unescaped);
// 输出: a b c
这些方法在 Node.js 的 Web 开发中,特别是在处理 HTTP 请求的查询参数和构建 URL 等场景下发挥着重要的作用。例如,在处理GET
请求时,从请求的 URL 中提取查询参数并将其转换为易于操作的对象,就可以使用querystring.parse
方法。而在构建GET
请求的 URL 时,需要将参数对象转换为查询字符串,这时就可以使用querystring.stringify
方法。