阿小信大人的头像
Where there is a Python, there is a way. 阿小信大人

lua 获取 nginx get 请求中的数组参数的坑2021-05-13 18:41

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 阅读[620] 评论[0]

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

本文最近访客

网友157.*.*.120[Redmond]2021-09-22 04:18
网友66.*.*.17[火星]2021-09-22 04:11
网友11.*.*.149[火星]2021-09-22 03:47
网友66.*.*.19[火星]2021-09-22 03:41

发表评论