获取请求参数

    首先看一下官方 API 文档,获取一个请求的参数有两个方法:、ngx.req.get_post_args,二者主要的区别是参数来源。

    参考下面例子:

    1. ~ curl '127.0.0.1/print_param?a=1&b=2%26' -d 'c=3&d=4%26'
    2. [GET ] key:b v:2&
    3. [GET ] key:a v:1
    4. [POST] key:d v:4&

    从这个例子中,我们可以看到两个函数 ngx.req.get_uri_argsngx.req.get_post_args 获取数据来源是有明显区别的,前者来自 uri 请求参数,而后者来自 post 请求内容。

    设置请求参数

    我们获取请求参数,自然是需要使用这些参数来完成业务控制目的。大家都知道,请求参数在传递过程中需要调用 进行规则转义。

    输出结果:

    1. ~ curl '127.0.0.1/test'
    2. [GET] key:b v:2&
    3. [GET] key:a v:1
    4. [POST] key:d v:4&
    5. [POST] key:c v:3

    与我们预期是一样的。

    PS:对于 ngx.location.capture 这里有个小技巧,args 参数可以接受字符串或 Lua 表的,这样我们的代码就更加简洁直观。

    1. {
    2. method = ngx.HTTP_POST,
    3. args = {a = 1, b = '2&'},
    4. body = 'c=3&d=4%26'
    5. }
    6. )