你可以在HTTP传输层与REST应用层之间处理错误。
因为REST适配器作为HTTP传输层与REST应用层之间的混合适配器工作,所以需要在这两个层之间映射某些错误条件。
举例来说,
一个HTTP错误代码404表示请求的URL无效,这在传输层的角度看是一个错误。然而,从REST应用层的角度来看,这也可能意味着某个现有资源(如客户或订单)不存在,在这种情况下,应该将消息视为已成功发送。
为了让您可以设置所需的行为,REST适配器支持自定义错误处理。
您可以使用自定义错误处理来定义某些错误条件被忽略,并且可以用自定义的结果消息作出反应。此外,您还可以根据消息数据的内容创建错误条件。
在发送和接收通道的错误处理标签页中,您可以定义最多十条规则。每条规则都是相互独立的。规则会从上到下进行评估,并且第一条匹配的规则将决定所采取的动作。
每个规则都有一个条件 (condition )和一个 动作(action)。条件由数据源(source)和值检查组成。动作类型包括 Error、Ignore Error 和 Custom Result。一个复选框可以启用逻辑条件的取反。
Error | 消息传送停止,并将设置为 failed。 |
Ignore Error | 任何错误都将被忽略,并且消息将被标记为已成功发送。对于同步消息,将返回一个空的消息有效负载。 |
Custom Result | 传递状态设置为 successful ,并且对于同步调用会返回一个自定义文本。大括号中的占位符变量将被解析。 |
每次自定义错误处理规则匹配时,都会写入一条审计日志,显示所采取的动作/策略以及来源规则。
在接收端配置自定义错误处理
在接收端,可以在接收通道内为非特定的错误情况配置一条规则,或者基于HTTP调用返回的数据来配置规则。
Receiver Action Types
触发 | 描述 | 例 |
---|---|---|
Exception | 因适配器中的任何类型的错误而触发。 | 例如无效的字符代码页或在XML和JSON之间转换时发生的错误。 |
Always | 这个触发器总是匹配,可用于返回自定义消息内容。 | |
Status Code | 当HTTP服务器返回选定的HTTP状态码时触发。您可以指定多个以逗号分隔的状态码。列表可以包含特定的代码、glob 通配符表达式和范围规范。 | 例如,“404, 405, 300-310, 5*”这条规则将匹配404、405、300至310以及所有以5开头的状态码。 |
Status Text | 当固定字符串或glob通配符表达式与HTTP状态文本匹配时触发。 | 例如,“not found”规则将匹配所有包含短语“not found”的状态文本。 |
Header Element | 当固定字符串或glob通配符表达式与给定的HTTP头的内容匹配时触发。 | 可以通过指定头部变量“cookie”并检查变量内容来检查Cookie的值。 |
Text Content | 当固定字符串或glob通配符表达式与HTTP结果文本匹配时触发。 | |
JSON Content | 当固定字符串或glob通配符表达式与从HTTP结果中提取的给定JSON元素的值匹配时触发。 | |
XML Content | 当固定字符串或glob通配符表达式与从HTTP结果中提取的给定XML元素的值匹配时触发 |
注意
如果选择了“文本内容”,则可以通过复选框来检查“空值”。
注意
在接收端,来自远程HTTP请求的信息可以通过内部变量获取,并且可以与大括号一起用于自定义结果消息中。
这些变量是:
变量名称 | 描述 |
---|---|
http_status | HTTP状态码,例如200、403等 |
http_status_text | HTTP状态文本,例如“403 forbidden”(403禁止访问) |
http_result | HTTP调用的内容 |
在发送端配置自定义错误处理