node.js基础学习-querystring模块-查询字符串处理(三)

发布于:2024-11-29 ⋅ 阅读:(29) ⋅ 点赞:(0)

一、前言

querystring是 Node.js 中的一个内置模块,主要用于处理 URL 查询字符串。它提供了一些实用的方法来解析和格式化查询字符串,使得在处理 HTTP 请求中的查询参数等场景时非常方便。
还可以防止sql注入

二、解析查询字符串(parse方法)

功能:将 URL 查询字符串解析为一个 JavaScript 对象。

语法querystring.parse(str[, sep[, eq[, options]]])

  • str:要解析的查询字符串。
  • sep(可选):用于分隔查询字符串中的键值对的字符,默认是&
  • eq(可选):用于分隔键和值的字符,默认是=
  • options(可选):一个包含decodeURIComponent函数的对象,用于解码查询字符串中的字符。如果没有提供这个函数,默认使用querystring.unescape()

示例

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()

示例

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 编码,将特殊字符转换为它们的十六进制编码形式。

示例

const querystring = require('querystring');
const str = 'a b c';
const escaped = querystring.escape(str);
console.log(escaped); 
// 输出: a%20b%20c

unescape方法

功能:对经过 URL 编码的字符串进行解码,将十六进制编码形式的字符转换回原始字符。

示例

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方法。