请求处理相关函数 ctyun.req.getfullbodydata 函数信息详见下表: 项目 描述 语法 datastr ctyun.req.getfullbodydata() 作用 获取请求体,如果底层nginx保存为文件,也需要解析文件内容。 入参 无。 返回值 datastr: string。请求体。 示例: pgsql if ctyun.req.getmethod() "POST" then local datastr ctyun.req.getfullbodydata() local data, err ctyun.json.decode(datastr) ...... end ctyun.req.getoriginurl 函数信息详见下表: 项目 描述 语法 urlstr ctyun.req.getoriginurl() 作用 获取原始请求url,也就是nginx变量$requesturi的值。 入参 无。 返回值 urlstr: string。原始请求url。 示例: awk local requesturi ctyun.req.getoriginurl() local m, err ctyun.re.match(requesturi, "^/([^/]+)/.") if m[1] 'path1' then ctyun.resp.exit(403) end ctyun.req.seturi 函数信息详见下表: 项目 描述 语法 ctyun.req.seturi(uri) 作用 设置回源uri(不包含回源查询参数)。 入参 uri: string。回源uri。 返回值 无。 示例: haxe local originaluri ctyun.var('uri') local newuri ctyun.re.sub(originaluri, "^/[^/]+/(.)", "/$1") ctyun.req.seturi(newuri) ctyun.req.geturiargs 函数信息详见下表: 项目 描述 语法 args, err ctyun.req.geturiargs(maxargs?) 作用 获取当前请求的 URI 请求参数,以Luatable的形式给出。 入参 maxargs? : number。解析的最大参数个数,默认100;设置为0表示无限制。 返回值 args: table。 err: string。 示例: key 和 value 将根据 URI 编码规则进行解码。 多次出现同一个参数 key 时,将生成一个 Lua table,按顺序保存其所有 value;没有 key 的参数将被忽略。 reasonml local args, err ctyun.req.geturiargs() if err "truncated" then one can choose to ignore or reject the current request here end for key, val in pairs(args) do if type(val) "table" then ctyun.resp.setoutput(key .. ": " .. table.concat(val, ", ")) else ctyun.resp.setoutput(key .. ": " .. tostring(val)) end end