自定义WSO2网关错误消息

时间:2015-09-16 10:18:05

标签: wso2

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状态代码。

您能告诉我我需要做些什么才能实现这一目标。谢谢。

1 个答案:

答案 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)。您可能还想更改其中的邮件格式。