阿小信大人的头像
做你说过的,说你能做的 阿小信大人

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
分享到:
阅读[357]

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

本文最近访客

网友66.*.*.214[火星]2021-04-19 11:04
网友66.*.*.212[火星]2021-04-19 10:54
网友220.*.*.173[北京]2021-04-19 10:52
网友106.*.*.74[火星]2021-04-19 09:16