有的时候,我们需要某些参数是必须传的,有的为可选的。但是,如果可选的参数有值,那么就要对它进行检查。在ngx_lua中,接收参数后,它的值与php中是不一样的。下边一一举例说明。
第一种URL:url?test=1
毫无疑问,php与ngx_lua均得到“1”
第二种URL:url?test=
php与ngx_lua也是一致的,那就是得到空字符串“”
第三种URL:url?test
php中还跟第二种一样处理的,得到了空字符串“”;但是ngx_lua却是一个boolean型的true!
第四种URL:url?test=true
如果你没蒙的话,这个答案是很简单的:字符串“true”
总结
当一个参数如果在ngx_lua中是可选的,但是有值的情况下需要做检查的判断语句为:
local params = ngx.req.get_uri_args()
params[key] ~= nil and params[key] ~= “” and type(params[key]) ~= ‘boolean’