本文摘自PHP中文网,作者青灯夜游,侵删。
相关推荐:《nodejs 教程》
无论是前端还是后端,经常出现的应用场景是URL中参数的处理。nodeJS的queryString模块提供了一些处理 query strings 的工具。本文将详细介绍nodeJS中的queryString
1 2 3 4 5 6 7 8 9 10 11 | var querystring = require( 'querystring' );
console.log(querystring);
|
序列化
【querystring.parse(str[, sep[, eq[, options]]])】
querystring.parse()方法能把一个URL查询字符串(str)解析成一个键值对的集合,参数如下
1 2 3 4 5 6 | str <String> 要解析的 URL 查询字符串。
sep <String> 用于界定查询字符串中的键值对的子字符串。默认为 '&' 。
eq <String> 用于界定查询字符串中的键与值的子字符串。默认为 '=' 。
options <Object>
decodeURIComponent <Function> 当解码查询字符串中百分号编码的字符时使用的函数。默认为 querystring.unescape()
maxKeys <number> 指定要解析的键的最大数量。默认为 1000。指定为 0 则移除键数的限制
|
1 2 3 | var querystring = require ( 'querystring' );
var str = 'foo=bar&abc=xyz&abc=123' ;
console.log(querystring.parse(str));
|
第二个参数用于界定查询字符串中的键值对的子字符串
1 2 3 | var querystring = require ( 'querystring' );
var str = 'foo=bar&abc=xyz&abc=123' ;
console.log(querystring.parse(str, 'a' ));
|
第三个参数用于界定查询字符串中的键与值的子字符串
1 2 3 | var querystring = require ( 'querystring' );
var str = 'foo=bar&abc=xyz&abc=123' ;
console.log(querystring.parse(str, '&' , 'c' ));
|
[注意]querystring.parse()方法返回的对象不继承自 JavaScript 的 Object。 这意味着典型的 Object 方法如 obj.toString()、obj.hasOwnProperty() 等没有被定义且无法使用
默认情况下,查询字符串中的百分号编码的字符会被认为使用了 UTF-8 编码。 如果使用的是另一种字符编码,则 decodeURIComponent 选项需要被指定
1 2 3 | var querystring = require ( 'querystring' );
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查询字符串,参数如下
1 2 3 4 5 | obj <Object> 要序列化成一个 URL 查询字符串的对象
sep <String> 用于界定查询字符串中的键值对的子字符串。默认为 '&'
eq <String> 用于界定查询字符串中的键与值的子字符串。默认为 '='
options
encodeURIComponent <Function> 当把对URL不安全的字符转换成查询字符串中的百分号编码时使用的函数。默认为 querystring.escape()
|
1 2 3 | var querystring = require ( 'querystring' );
console.log(querystring.stringify({ foo: 'bar' , baz: [ 'qux' , 'quux' ], corge: '' }));
|
1 2 3 | var querystring = require ( 'querystring' );
console.log(querystring.stringify({foo: 'bar' , baz: 'qux' }, ';' , ':' ));
|
编码
【querystring.escape(str)】
querystring.escape()方法对给定的str执行URL百分号编码,与encodeURIComponent方法一样
querystring.escape()方法是供querystring.stringify()使用的,且通常不被直接使用。它之所以对外开放,是为了在需要时可以通过给querystring.escape赋值一个函数来重写编码的实现
1 2 3 | var querystring = require ( 'querystring' );
console.log(encodeURIComponent( '测试' ));
console.log(querystring.escape( '测试' ));
|
【querystring.unescape(str)】
querystring.unescape() 方法对给定的 str 上的 URL 百分号编码的字符执行解码
querystring.unescape()方法是供querystring.parse()使用的,且通常不被直接使用。它之所以对外开放,是为了在需要时可以通过给querystring.unescape赋值一个函数来重写解码的实现。
querystring.unescape()方法默认使用JavaScript内置的decodeURIComponent() 方法来解码
1 2 3 | 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中
1 2 3 4 5 6 7 8 9 10 11 | var 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);
console.log(query);
console.log(queryObj);
}).listen(8080);
|
POST
post请求的数据会被写入缓冲区中,需要通过request的data事件和end事件来进行数据拼接处理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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);
var queryObj = querystring.parse(str);
console.log(queryObj);
});
}).listen(8080);
|
更多编程相关知识,请访问:编程教学!!
以上就是详解nodejs中的queryString模块的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
了解nodejs中的可读流
node.js怎么引用外部js
10个面向开发人员的顶级nodejs框架
深入浅析nodejs中的事件和事件循环
聊聊nodejs获取参数的四种方法
node.js安装和配置环境以及部署项目的方法介绍(windows系统下)
nodejs适合做些什么?
认识nvm工具,浅谈nvm如何切换nodejs版本
23个需要了解的十分有用的nodejs库(推荐)
了解nodejs中的模块载入
更多相关阅读请进入《nodejs》频道 >>
人民邮电出版社
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者
转载请注明出处:木庄网络博客 » 详解nodejs中的queryString模块