阿小信大人的头像
Life is short (You need Python) Bruce Eckel

lua 获取 nginx get 请求中的数组参数的坑2021-01-08 22:34

lua 在 nginx 里面获取 http get 请求的 url 数组参数时有个小坑需要特别注意。

线上的 get 请求传数组参数的形式让人眼花缭乱:

?p=v1&p=v2
?p[]=v1&p[]=v2
?p[0]=v1&p[1]=v2

三种形式都有,然后 lua 的坑在于获取没有数组下标的数组参数的时候,数据格式可能不一样...导致程序异常。

lua 在 nginx 里面获取到的是:

raw: ?p=v1&p=v2 -> {"p":["v1","v2"]}
-------------
raw: ?p=v1 -> {"p":"v1"}

一个元素的时候它的值是字符串

go http 包的处理:

raw: ?p=v1&p=v2 -> map[p:[v1 v2]]
-------------
raw: ?p=v1 -> map[p:[v1]]

表现都一致,p的值都是一个数组

在 gin 里面,必须要指定方法获取参数 c.Query("p") 只能得到第一个 p 参数的值, 要拿数组需要使用 c.QueryArray("p") 拿到的也一定是数组。

如果您觉得从我的分享中得到了帮助,并且希望我的博客持续发展下去,请点击支付宝捐赠,谢谢!

若非特别声明,文章均为阿小信的个人笔记,转载请注明出处。文章如有侵权内容,请联系我,我会及时删除。

#Linux/Mac#   #nginx
分享到:
阅读[79] 评论[0]

你可能也感兴趣的文章推荐

本文最近访客

网友220.*.*.178[北京]2021-01-24 06:50
网友54.*.*.162[法国]2021-01-24 06:31
网友64.*.*.176[火星]2021-01-24 06:30
网友92.*.*.45[火星]2021-01-24 05:36

发表评论