繁体   English   中英

如何自定义 Anypoint API 管理器标准策略生成的错误消息?

[英]How to customise an error message generated by the Anypoint API manager standard policy?

CloudHub (Mule 4.4) 上运行了一个 API,并受到标准SLA 速率限制策略的保护。

我们需要提供自定义错误消息正文,而不是在身份验证失败时由策略生成的默认错误消息正文。

策略返回的默认错误正文如下所示:

{
"error": "Invalid client id or secret"
}

当我在 Studio 的调试器中运行应用程序时,它正在拦截异常,我可以看到策略产生的错误类型是 CLIENT-ID-ENFORCEMENT:INVALID_CREDENTIALS。
这也表明异常正在到达 Mule 应用程序本身。 因此,它必须是一种用自定义处理程序覆盖默认处理程序的方法。

首先,我尝试将错误类型的处理程序添加到其他 API Kit 错误旁边的 HTTP 请求处理流程中。 它没有拦截错误。

然后,我为错误类型定义了一个单独的错误处理程序,并在全局配置中将其设置为“默认错误处理程序”。

<configuration doc:name="Configuration" doc:id="7a7e22cd-2ee7-42ee-af15-eaf2693d72d9" defaultErrorHandler-ref="apiErrorHandler" />
<error-handler name="apiErrorHandler">
<on-error-propagate enableNotifications="true" logException="true" type="CLIENT-ID-ENFORCEMENT:*">
<ee:transform xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/json
---
{message: "Unauthorised"}]]></ee:set-payload>
</ee:message>
</on-error-propagate>
</error-handler>

这也没有奏效。

您能否建议正确的方法来自定义返回标准 SLA 策略的错误消息?

需要明确的是,我很清楚可以编写自己的自定义策略。 但目的是保持标准,只是定制一些错误类型的响应。

目前这是不可能的。 策略必须处理自己的错误,它们不能在流中被拦截。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM