现在有一个需求,要求根据http method来过滤response body。
我试了下面代码中的这种方式。可是失败了($resp_body在log文件中打印出来为空)。
想问一下body_filter_by_lua中能否使用ngx.req.get_method?
或者在header_filter_by_lua中使用ngx.req.get_method,该如何与body_filter_by_lua进行交互?
lua_need_request_body on;
set $resp_body "";
body_filter_by_lua '
if "GET" == ngx.req.get_method() then
ngx.var.resp_body = "TEST"
elseif "POST" == ngx.req.get_method() then
local maxlen = 100
ngx.ctx.buffered = ngx.ctx.buffered or ""
if #ngx.ctx.buffered < maxlen then
ngx.ctx.buffered = ngx.ctx.buffered .. string.sub(ngx.arg[1], 1, maxlen - #ngx.ctx.buffered)
end
if ngx.arg[2] then
ngx.var.resp_body = ngx.ctx.buffered
end
';