【发布时间】:2022-07-24 06:35:26
【问题描述】:
孔错误
超出 API 速率限制。
如何将 Kong 错误替换为自定义文本,例如“PoC 错误”?
【问题讨论】:
-
我做了一个 PR 来实现它github.com/Kong/kong/pull/8930
标签: kong
孔错误
超出 API 速率限制。
如何将 Kong 错误替换为自定义文本,例如“PoC 错误”?
【问题讨论】:
标签: kong
此解决方案并不理想,但目前它正在工作,直到出现更好的解决方案(可能来自 kong)。所有插件和内部都存在自定义错误消息的问题。
我创建了一个全局后置函数 (serverless-functions),它检查状态码是否高于 400 并拦截响应。
在“body-phase”处理程序的顶部定义了一个包含所有要拦截的错误的静态定义表。
问题在于 kong 错误看起来并不总是相同,因为它们通过查看响应中的“Content-Type”标头来生成错误消息。 我的解决方案是使用与模板生成相同的工具 (kong.utils) 并使用不同的消息填充我的错误表。
首先,在“标头阶段”中,我检查响应代码。如果它高于 400,我清除“Content-Length”标头(必需)并为下一阶段设置一个标志(例如 kong.ctx.custom_error)以指示需要拦截。
其次,在“正文阶段”中,我检查标志并将响应正文与我生成的错误表相匹配。如果找到匹配项,则响应正文将被预定义的错误消息覆盖。
出于性能考虑,我通过将覆盖主体的处理程序返回到 kong 来记忆“主体阶段”中的表格。目前,kong 将在加载时生成表一次,如果发生请求,则只会调用返回的函数。
希望我能在一定程度上解释它并进一步帮助
【讨论】: