Kong 自定义错误消息/响应
Posted
技术标签:
【中文标题】Kong 自定义错误消息/响应【英文标题】:Kong custom error message / response 【发布时间】:2018-11-13 22:08:58 【问题描述】:我们正在寻求覆盖 Kong 错误响应结构并编写自定义消息(即用我们的自定义消息替换“超出 API 速率限制”、“无效的身份验证凭据”等)。
我们要找的错误响应结构(代码是自定义的内部错误代码,与HTTP代码无关):
"errors":[
"code": 10,
"message": "This is a custom message for code 10."
]
除了编写自定义插件之外,我没有看到任何其他可能性。如果这是唯一的解决方案,如何在默认的 Kubernetes 部署(Helm 图表)中安装插件?
【问题讨论】:
【参考方案1】:我没有创建自定义插件,而是替换了handler.lua
(或任何包含错误消息定义的文件)。因此,您仍然可以使用原始插件,但使用自定义逻辑(在您的情况下意味着使用自定义消息)。
如果您使用官方 Kong Docker 映像,部署自定义插件或覆盖的最简单方法是将自定义文件放入存储库并通过创建扩展原始 Kong 映像并复制必要文件的 Dockerfile 来构建自己的映像到 Docker 映像中的 Kong Plugins 文件夹。如果是自定义插件(不仅是覆盖),您还必须设置一个环境变量 KONG_PLUGINS=bundled,<customPluginName>
以启用新的自定义插件。
【讨论】:
我同意这可能是一个可行的解决方案,但由于各种原因,我确实发现它非常危险 - 主要是因为这会将您的逻辑绑定到插件版本。这意味着很难将其更新到较新的版本(对于新版本的 handler.lua 中的每次更改,您都需要进行新的更改)。这很危险,有时您可能会忘记更新它,从而使其难以维护。回到过去,我确实想出了一个自定义插件来解决这个问题。检查以下 repo 以获取error-transformer
插件:github.com/urgas9/kong-plugins 我将尝试添加更多插件
感谢您的链接。我知道所提出的解决方案在可维护性方面有很多缺点,但这是我所知道的唯一解决方案,可以避免在现有插件发生微小变化的情况下完全重复插件。或者您是否也为此找到了另一种解决方案?以上是关于Kong 自定义错误消息/响应的主要内容,如果未能解决你的问题,请参考以下文章
如何自定义有关“failureRequiringAppLaunch”类型的 Siri 意图响应的错误消息