exit-transformer
exit-transformer 插件支持根据 API7 插件返回的状态码、请求头和请求体自定义网关响应。当配置为全局插件时,它还支持自定义请求不存在的路由时的响应。
转换逻辑在插件中使用 Lua 函数定义,遵循以下语法:
return (function(code, body, header) if {{ condition }} then return {{ modified_resp }} end return code, body, header end)(...)
示例
以下示例演示了如何在不同场景下使用 exit-transformer。
修改 404 路由未找到响应
以下示例演示了当路由不存在时,如何使用该插件更新 404 Not Found 响应代码和头。在这种情况下,插件需要配置为全局规则插件。
创建一个启用 exit-transformer 插件的全局规则,其中函数将响应状态码更新为 405,如果原始状态码为 404,则添加自定义 X-Custom-Header 头:
curl -i "http://127.0.0.1:9180/apisix/admin/global_rules" -X PUT \
-H "X-API-KEY: ${ADMIN_API_KEY}" \
-d '{
"id": "transform-404-not-found",
"plugins": {
"exit-transformer": {
"functions": ["return (function(code, body, header) if code == 404 then header[\"X-Custom-Header\"] = \"Modified\" return 405, body, header end return code, body, header end)(...)"]
}
}
}'
发送请求到一个不存在的路由:
curl -i "http://127.0.0.1:9080/non-existent"
你应该收到 HTTP/1.1 405 Not Allowed 响应,并看到 X-Custom-Header: Modified 头。