Apisix 自定义插件-提取请求体action并设置到请求头中

local core = require("apisix.core")
local ngx = ngx
local plugin = require("apisix.plugin")
local ngx_re = require("ngx.re")

local schema = {
    type = "object",
}

local plugin_name = "sh-add-header"

local _M = {
    version = 0.1,
    priority = 29999,
    name = plugin_name,
    schema = schema,
}

function _M.access(conf, ctx)
    -- print log
    ngx.req.read_body()
    local body = ngx.req.get_body_data()
    local m, err = ngx.re.match(ngx.re.gsub(body, "\"", ""), "(action: )([0-9]+)")
    if m then
        ngx.req.set_header("http_actions", m[2])
    end
end

function _M.log(conf, ctx)
    local headers = ngx.req.get_headers()
    core.log.warn("headers: ", core.json.encode(headers))
end

return _M

星霜荏苒 居诸不息