gpt4 book ai didi

exception - HTTP 响应中的 Mule-Setting 状态代码

转载 作者:行者123 更新时间:2023-12-04 06:55:07 25 4
gpt4 key购买 nike

我需要使用 Mule Choice 异常策略在 mule HTTP 中设置状态代码和原因短语,该策略是 Catch 异常策略。遵循 Mulesoft 文档 https://docs.mulesoft.com/mule-user-guide/v/3.7/http-listener-connector#http-response-status-code-and-reason-phrase

我试着做这样的事情:

  <choice-exception-strategy name="MyExptn">
<rollback-exception-strategy when="#[exception.causedBy(org.mule.component.ComponentException)]" doc:name="ComponentException Strategy">

<set-variable variableName="errorTableNotPresent" value="400" doc:name="Set status code"/>
<set-variable variableName="errorReasonPhrase" value="Table name does not exist" doc:name="Set reason phrase"/>
<message-properties-transformer doc:name="Message Properties">
<add-message-property key="timestamp" value="#[server.dateTime.format('yyyy-MM-dd hh:mm:ss.SS')]"/>
<add-message-property key="messageID" value="#[message.id]"/>
<add-message-property key="status" value="Error"/>
<add-message-property key="executionPoint" value="Error Handling"/>
<add-message-property key="ip" value="#[server.ip]"/>
<add-message-property key="serverName" value="#[server.host]"/>
<add-message-property key="domainname" value="xyz.com"/>
<add-message-property key="errorCode" value="123"/>
<add-message-property key="errorType" value="Bad request"/>
<add-message-property key="errorText" value="ComponentException"/>
<add-message-property key="integrationName" value="${integrationName}"/>
<add-message-property key="resourceType" value="HTTP Request"/>
<add-message-property key="resourceName" value="Payload"/>
</message-properties-transformer>
<logger level="INFO" message="#[LoggingAppendString] - Failure" doc:name="Logger"/>

</rollback-exception-strategy>

</choice-exception-strategy>

哪个工作正常。但是当我用 Catch Exception Strategy 替换它时,如下所示:

<choice-exception-strategy name="MyExptn">
<catch-exception-strategy when="#[exception.causedBy(org.mule.component.ComponentException)]" doc:name="ComponentException Strategy">

<set-variable variableName="errorTableNotPresent" value="400" doc:name="Set status code"/>
<set-variable variableName="errorReasonPhrase" value="Table name does not exist" doc:name="Set reason phrase"/>
<message-properties-transformer doc:name="Message Properties">
<add-message-property key="timestamp" value="#[server.dateTime.format('yyyy-MM-dd hh:mm:ss.SS')]"/>
<add-message-property key="messageID" value="#[message.id]"/>
<add-message-property key="status" value="Error"/>
<add-message-property key="executionPoint" value="Error Handling"/>
<add-message-property key="ip" value="#[server.ip]"/>
<add-message-property key="serverName" value="#[server.host]"/>
<add-message-property key="domainname" value="xyz.com"/>
<add-message-property key="errorCode" value="123"/>
<add-message-property key="errorType" value="Bad request"/>
<add-message-property key="errorText" value="ComponentException"/>
<add-message-property key="integrationName" value="${integrationName}"/>
<add-message-property key="resourceType" value="HTTP Request"/>
<add-message-property key="resourceName" value="Payload"/>
</message-properties-transformer>
<logger level="INFO" message="#[LoggingAppendString] - Failure" doc:name="Logger"/>

</catch-exception-strategy>

</choice-exception-strategy>

只会记录消息,但 HTTP 状态始终显示 200 OK。

我的基本要求是根据错误发送状态码。例如,如果请求不正确,则错误请求代码为 400。

最佳答案

定义两个出站属性:http.status 和 http.reason。这些将作为实际状态发送给客户端。如果不设置这些值,Mule 将默认为 200 - OK。

我没有看到您的示例中定义了这些字段。

您提供的文档链接中的示例:

<set-property propertyName="http.status" value="500" doc:name="Property"/>
<set-property propertyName="http.reason" value="Request successfully executed!" doc:name="Property"/>

确保将这些定义为出站属性。

请记住,在运行时的某些版本上存在一个错误,其中 http.reason 未正确映射到响应中,导致类似于 Status 400 - OK 而不是 Status: 400 - Bad Request。 https://www.mulesoft.org/jira/browse/MULE-9045

关于exception - HTTP 响应中的 Mule-Setting 状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36082878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com