php querystring使用,详解nodejs中的queryString模块

php querystring使用,详解nodejs中的queryString模块无论是前端还是后端 经常出现的应用场景是 URL 中参数的处理 nodeJS 的 queryString 模块提供了一些处理 querystrings 的工具 本文将详细介绍 nodeJS 中的 queryStringv require querystring unescapeBuff Function unescape Function qsUne

0d5094eaa6c7d75e374176510757a557.png

无论是前端还是后端,经常出现的应用场景是URL中参数的处理。nodeJS的queryString模块提供了一些处理 query strings 的工具。本文将详细介绍nodeJS中的queryStringvar querystring = require(‘querystring’);

/*

{ unescapeBuffer: [Function],

unescape: [Function: qsUnescape],

escape: [Function],

encode: [Function],

stringify: [Function],

decode: [Function],

parse: [Function] }

*/

console.log(querystring);

序列化

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

querystring.parse()方法能把一个URL查询字符串(str)解析成一个键值对的集合,参数如下str 要解析的 URL 查询字符串。

sep 用于界定查询字符串中的键值对的子字符串。默认为 ‘&’。

eq 用于界定查询字符串中的键与值的子字符串。默认为 ‘=’。

options

decodeURIComponent 当解码查询字符串中百分号编码的字符时使用的函数。默认为 querystring.unescape()

maxKeys 指定要解析的键的最大数量。默认为 1000。指定为 0 则移除键数的限制var querystring = require(‘querystring’);

var str = ‘foo=bar&abc=xyz&abc=123’;

console.log(querystring.parse(str));//'{ foo: ‘bar’, abc: [ ‘xyz’, ‘123’ ] }’

第二个参数用于界定查询字符串中的键值对的子字符串var querystring = require(‘querystring’);

var str = ‘foo=bar&abc=xyz&abc=123’;

console.log(querystring.parse(str,’a’));//{ foo: ‘b’, ‘r&’: ”, bc: [ ‘xyz&’, ‘123’ ] }

第三个参数用于界定查询字符串中的键与值的子字符串var querystring = require(‘querystring’);

var str = ‘foo=bar&abc=xyz&abc=123’;

console.log(querystring.parse(str,’&’,’c’));//{ ‘foo=bar’: ”, ab: [ ‘=xyz’, ‘=123’ ] }

[注意]querystring.parse()方法返回的对象不继承自 JavaScript 的 Object。 这意味着典型的 Object 方法如 obj.toString()、obj.hasOwnProperty() 等没有被定义且无法使用

默认情况下,查询字符串中的百分号编码的字符会被认为使用了 UTF-8 编码。 如果使用的是另一种字符编码,则 decodeURIComponent 选项需要被指定var querystring = require(‘querystring’);

//{ w: ‘����’, foo: ‘bar’ }

console.log(querystring.parse(‘w=%D6%D0%CE%C4&foo=bar’, null, null,{ decodeURIComponent: ‘gbkDecodeURIComponent’ }));

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

querystring.stringify()方法是querystring.parse()方法的逆向操作,通过遍历对象的自有属性,从一个给定的obj产生一个URL查询字符串,参数如下obj 要序列化成一个 URL 查询字符串的对象

sep 用于界定查询字符串中的键值对的子字符串。默认为 ‘&’

eq 用于界定查询字符串中的键与值的子字符串。默认为 ‘=’

options

encodeURIComponent 当把对URL不安全的字符转换成查询字符串中的百分号编码时使用的函数。默认为 querystring.escape()var querystring = require(‘querystring’);

//’foo=bar&baz=qux&baz=quux&corge=’

console.log(querystring.stringify({ foo: ‘bar’, baz: [‘qux’, ‘quux’], corge: ” }));var querystring = require(‘querystring’);

//’foo:bar;baz:qux’

console.log(querystring.stringify({foo: ‘bar’, baz: ‘qux’}, ‘;’, ‘:’));

编码

【querystring.escape(str)】

querystring.escape()方法对给定的str执行URL百分号编码,与encodeURIComponent方法一样

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

console.log(encodeURIComponent(‘测试’));//%E6%B5%8B%E8%AF%95

console.log(querystring.escape(‘测试’));//%E6%B5%8B%E8%AF%95

【querystring.unescape(str)】

querystring.unescape() 方法对给定的 str 上的 URL 百分号编码的字符执行解码

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

querystring.unescape()方法默认使用JavaScript内置的decodeURIComponent() 方法来解码var querystring = require(‘querystring’);

console.log(decodeURIComponent(‘%E6%B5%8B%E8%AF%95′));//’测试’

console.log(querystring.unescape(‘%E6%B5%8B%E8%AF%95′));//’测试’

GET

get请求的数据保存在URL中http://127.0.0.1:8080/home/test?a=1&b=2var http = require(‘http’);

var url = require(‘url’);

var querystring = require(‘querystring’);

http.createServer(function(req,res){

var urlObj = url.parse(req.url);

var query = urlObj.query;

var queryObj = querystring.parse(query);

console.log(req.url);//’/home/test?a=1&b=2′

console.log(query);//’a=1&b=2′

console.log(queryObj);//{ a: ‘1’, b: ‘2’ }

}).listen(8080);

POST

post请求的数据会被写入缓冲区中,需要通过request的data事件和end事件来进行数据拼接处理var http = require(‘http’);

var url = require(‘url’);

var querystring = require(‘querystring’);

http.createServer(function(req,res){

var str = ”;

req.on(‘data’, function(thunk){

str += thunk;

});

req.on(‘end’, function(){

console.log(str);//’name=a&email=b%40b.com’

var queryObj = querystring.parse(str);

console.log(queryObj);//{ name: ‘a’, email: ‘b%40b.com’ }

});

}).listen(8080);

c2ce8e5000630bb3584ebc1521ef6024.png

更多编程相关知识,请访问:编程教学!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217444.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午9:33
下一篇 2026年3月18日 上午9:33


相关推荐

  • PathFileExists 文件目录是否存在

    PathFileExists 文件目录是否存在if(!PathFileExists(_T(“d:\\test”)))    returnNULL; 也可用CFileFinder查找文件是否存在。PathFileExists可查看目录和文件。

    2022年7月12日
    20
  • CreateMutex用法详解

    CreateMutex用法详解HANDLE nbsp CreateMutex LPSECURITY ATTRIBUTES nbsp lpMutexAttri nbsp nbsp 指向安全属性的指针 BOOL nbsp bInitialOwne nbsp nbsp 初始化互斥对象的所有者 LPCTSTR nbsp lpName nbsp nbsp 指向互斥对象名的指针 1 nbsp CreateMutex 只是创建了一把锁 nbsp nbsp 这把锁你用来锁门还是锁抽屉还是锁

    2026年3月19日
    2
  • leetcode-26删除有序数组中的重复项(双指针)「建议收藏」

    leetcode-26删除有序数组中的重复项(双指针)「建议收藏」原题链接给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝int len = removeDuplicate

    2022年8月8日
    7
  • java 常量池和运行时常量池_常量池在jvm的哪个部分

    java 常量池和运行时常量池_常量池在jvm的哪个部分前言一直在《深入理解JVM》对常量池只有一个浅薄的了解,之前也遇到过这种题目,今天还是要挑出来进行一次全方位的了解。常量池分类常量池大体可以分为:静态常量池,运行时常量池。静态常量池存在于class文件中,比如经常使用的javap-verbose中,常量池总是在最前面把?运行时常量池呢,就是在class文件被加载进了内存之后,常量池保存在了方法区中,通常说的常量池值的…

    2025年10月17日
    6
  • 腾讯混元1.8B模型教程:多GPU并行推理配置详解

    腾讯混元1.8B模型教程:多GPU并行推理配置详解

    2026年3月12日
    2
  • Mybase到期 激活成功教程

    Mybase到期 激活成功教程1 找到 mybase 安装目录 C Users Zsh AppData Local wjjsoft nyfedit62 打开 nyfedit ini3 nbsp 内容中查找 nbsp App UserLic FirstUseOn 删除 4 保存打开 mybase 即可 nbsp

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号