WSO2网关返回以下格式的错误消息:
{"fault":{"code":404,"type":"Status report","message":"Not Found",
"description":"The requested resource (/account-info/1.0/) is not available."}}
但我们有一个标准格式的所有错误消息,我们的微服务(实现WSO2服务的API)返回。我们返回一个带有两个字段的简单JSON对象,error& ERROR_DESCRIPTION。因此,我们可以为用户提供一致的界面,在这种特殊情况下,我们希望看到WSO2网关正确地返回:
{"error":"SERVICE_UNAVAILABLE","error_description":
"The requested resource (/account-info/1.0/) is not available."}
并仅在标题中返回HTTP状态代码。
您能告诉我我需要做些什么才能实现这一目标。谢谢。
答案 0 :(得分:0)
这些错误消息是从WSO2 API Manager附带的默认序列生成的。
如果在API Manager中找不到所请求的资源,它将执行主序列($AM_HOME/repository/deployment/server/synapse-configs/default/sequences/main.xml
)。如果您打开此文件,您将看到使用payload factory mediator生成上述默认错误消息,如下所示。
<payloadFactory>
<format>
<am:fault xmlns:am="http://wso2.org/apimanager">
<am:code>404</am:code>
<am:type>Status report</am:type>
<am:message>Not Found</am:message>
<am:description>The requested resource (/$1) is not available.</am:description>
</am:fault>
</format>
<args>
<arg expression="$axis2:REST_URL_POSTFIX" />
</args>
</payloadFactory>
因此,如果要自定义错误消息,则需要根据需要修改上述有效负载工厂介体。
同样,如果发生任何故障,将执行故障序列($AM_HOME/repository/deployment/server/synapse-configs/default/sequences/fault.xml
)。您可能还想更改其中的邮件格式。