Appearance
qs vs querystring
querystring
querystring是官方提供包, 有6个方法,分别是 encode/stringify、decode/parse、escape、unescape,
其中 encode 是 stringify 的别名, decode 是 parse 的别名, 而 escape 和 unescape, 官方不推荐使用,所以这里只讨论 stringify 和 parse
引入 querystring
js
import querystring from 'querystring';
// 或
const querystring = require('querystring');
- querystring.stringify
对对象做字符串化处理,默认处理成 get 参数格式
js
querystring.stringify({a: 1, b: 2, c:3});
// output: a=1&b=2&c=3
包含 4 个参数,分别是 (数据, 键值间分隔符,键值分隔符,是否编码), 默认编码
js
querystring.stringify({a: 1, b: 2, c:3}, '&', '=');
// output: a=1&b=2&c=3
需要注意的是如果给定的变量中包含数组, 不建议直接放到GET参数中使用,这是一个坑, 比如下面这段代码
js
querystring.stringify({a: [1,2,3]});
// output: a=1&a=2&a=3
服务器也许只能接收到 a=3, 通常情况下,服务器需要GET值 a[]=1&a[]=2&a[]=3
, 这时候需要 qs
上场了.
- qs.stringify
引入方式
js
import qs from 'qs';
// 或
const qs = require('qs');
这是 qs 对 {a: [1,2,3]}
做的处理,不但直接 encode 了,而且更符合服务器接收的方式
js
qs.stringify({a: [1,2,3]});
// output: a%5B0%5D=1&a%5B1%5D=2&a%5B2%5D=3
但是 qs 是第三方包,使用时需要 npm install qs -E
另外 qs 还有别的惊艳功能比如
js
qs.parse('a[b]=c')
// output: { a: { b: 'c' } }
参考