NodeJS的querystring模块进阶

附录:常用HTTP响应头和请求头信息对照表

  1. Node简介
  2. 第一个node程序
  3. module(模块系统)
  4. npm包管理器
  5. 模块系统优先级
  6. 认识http内置模块
  7. url内置模块
  8. path内置模块
  9. fs内置模块
  10. http模块服务端进阶
  11. http报文浅析
  12. url模块进阶
  13. path模块进阶
  14. querystring模块进阶
  15. 了解Buffer和Stream
  16. os模块
  17. Buffer模块
  18. Stream模块
  19. http模块客户端
  20. Cookie浅析

querystring模块进阶

querystring 模块提供了一些实用函数,用于解析与格式化 URL 查询字符串。 使用以下方法引入:

const querystring = require('querystring');
 

querystring.escape(str)编码

  • str

对给定的 str 进行 URL 编码。

该方法是提供给 querystring.stringify() 使用的,通常不直接使用。 它之所以对外开放,是为了在需要时可以通过给 querystring.escape 赋值一个函数来重写编码的实现。

默认使用 JavaScript 内置的 encodeURIComponent() 方法来编码。

querystring.unescape(str)解码

  • str

对给定的 str 进行解码。

该方法是提供给 querystring.parse() 使用的,通常不直接使用。 它之所以对外开放,是为了在需要时可以通过给 querystring.unescape 赋值一个函数来重写解码的实现。

默认使用 JavaScript 内置的 decodeURIComponent() 方法来解码。

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

  • str 要解析的 URL 查询字符串。
  • sep 用于界定查询字符串中的键值对的子字符串。默认为 '&'
  • eq 用于界定查询字符串中的键与值的子字符串。默认为 '='
  • options
    • decodeURIComponent 解码查询字符串的字符时使用的函数。默认为 querystring.unescape()
    • maxKeys 指定要解析的键的最大数量。默认为 1000。指定为 0 则不限制。

该方法会把一个 URL 查询字符串 str 解析成一个键值对的集合。

例子,查询字符串 'foo=bar&abc=xyz&abc=123' 被解析成:

{
  foo: 'bar',
  abc: ['xyz', '123']
}
 

该方法返回的对象不继承自 JavaScript 的 Object 类。 这意味着 Object 类的方法如 obj.toString()obj.hasOwnProperty() 等没有被定义且无法使用。

默认情况下,查询字符串中的字符会被视为使用 UTF-8 编码。 如果使用的是其他字符编码,则需要指定 decodeURIComponent 选项,例如:

// 假设存在 gbkDecodeURIComponent 函数。
querystring.parse('w=%D6%D0%CE%C4&foo=bar', null, null,
                  { decodeURIComponent: gbkDecodeURIComponent });
 

querystring.stringify(obj[, sep[, eq[, options]]])

  • obj 要序列化成 URL 查询字符串的对象。
  • sep 用于界定查询字符串中的键值对的子字符串。默认为 '&'
  • eq 用于界定查询字符串中的键与值的子字符串。默认为 '='
  • options
    • encodeURIComponent 把对象中的字符转换成查询字符串时使用的函数。默认为 querystring.escape()

该方法通过遍历给定的 obj 对象的自身属性,生成 URL 查询字符串。

如果 obj 对象中的属性的类型为<string> | <number> | <boolean> | <string> | <number> | <boolean>,则属性的值会被序列化。 其他类型的属性的值会被强制转换为空字符串。

例子:

querystring.stringify({ foo: 'bar', baz: ['qux', 'quux'], corge: '' });
// 返回 'foo=bar&baz=qux&baz=quux&corge='
 
querystring.stringify({ foo: 'bar', baz: 'qux' }, ';', ':');
// 返回 'foo:bar;baz:qux'
 

默认情况下,使用 UTF-8 进行编码。 如果需要使用其他编码,则需要指定 encodeURIComponent 选项,例如:

// 假设存在 gbkEncodeURIComponent 函数。
querystring.stringify({ w: '中文', foo: 'bar' }, null, null,
                      { encodeURIComponent: gbkEncodeURIComponent });
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node.js的request模块是一个简单而强大的HTTP客户端,可以用来向HTTP服务器发起请求,并获取服务器的响应。它是一个Node.js内置的模块,以npm包的形式提供。通过使用request模块,你可以方便地实现各种HTTP请求,如GET、POST、DELETE等等。你可以使用request模块来获取网页内容,或者向API接口发起请求,并处理响应。在使用request模块时,你可以通过引入模块并调用相应的方法来发起请求,如使用get方法发起GET请求的示例代码如下: ```javascript var request = require('request'); request('您的请求url', function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body) // 请求成功的处理逻辑 } }); ``` 以上代码中,您需要将"您的请求url"替换为您实际要请求的URL地址。当请求成功时,可以在回调函数中处理响应的内容。 #### 引用[.reference_title] - *1* *3* [nodejs request模块](https://blog.csdn.net/inthat/article/details/114686305)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [request是nodejs的内置模块吗](https://blog.csdn.net/weixin_35757531/article/details/129072312)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值