- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 WSO2 API 管理器 (StockQuoteService) 创建了一个 REST API,并配置了一个基于后端 SOAP 的 Web 服务(将 REST 转换为 SOAP),它将根据 URL 模板从那里获取数据。
在“In Sequence”中,我使用 Switch 调解器根据传入数据将请求发送到不同的后端端点,而在默认情况下(没有大小写匹配时),我想将错误消息发送回客户端提示“输入消息无效”。
我已经尝试使用发送调解器、响应调解器、序列调解器,但仍然没有成功(可能是做错了什么),因为当我尝试调用不响应的 URL 时,我仍然收到“服务器无响应”错误匹配 Switch 的任何大小写并转到 Default。
如何从 WSO2 API Manager 的 In Sequence 中将错误/故障消息发送回客户端?
最佳答案
在我的场景中,输入序列我使用了开关调解器,我调用了一个操作或另一个,在默认选项中我创建了我的失败响应
<inSequence>
<switch xmlns:xsd="http://pharmacy.arce.org/xsd"
description=""
source="//xsd:desc">
<case regex="NATURAL">
<log description="Search Pharmacy" level="custom" separator=",">
<property name="STATUS" value="Search Pharmacy"/>
</log>
<payloadFactory media-type="xml">
<format>
<p:searchpharmacy xmlns:p="http://pharmacy.arce.org">
<ax22:pharmacy xmlns:ax22="http://pharmacy.arce.org">
<xs:desc xmlns:xs="http://pharmacy.arce.org/xsd">$1</xs:desc>
<xs:id xmlns:xs="http://pharmacy.arce.org/xsd">$2</xs:id>
<xs:latitude xmlns:xs="http://pharmacy.arce.org/xsd">$3</xs:latitude>
<xs:longitude xmlns:xs="http://pharmacy.arce.org/xsd">$4</xs:longitude>
</ax22:pharmacy>
</p:searchpharmacy>
</format>
<args>
<arg evaluator="xml" expression="//xsd:desc"/>
<arg evaluator="xml" expression="//xsd:id"/>
<arg evaluator="xml" expression="//xsd:latitude"/>
<arg evaluator="xml" expression="//xsd:longitude"/>
</args>
</payloadFactory>
<header name="To" scope="default" value="urn:searchpharmacy"/>
<log level="full" separator=",">
<property name="Mensaje" value="Cuerpo"/>
</log>
</case>
<case regex="EXPERIMENTAL">
<log description="Search Pharmacy Direction" level="custom" separator=",">
<property name="STATUS" value="Search Pharmacy Direction Request"/>
</log>
<payloadFactory media-type="xml">
<format>
<p:searchPhone xmlns:p="http://pharmacy.arce.org">
<ax22:pharmacy xmlns:ax22="http://pharmacy.arce.org">
<xs:desc xmlns:xs="http://pharmacy.arce.org/xsd">$1</xs:desc>
<xs:id xmlns:xs="http://pharmacy.arce.org/xsd">$2</xs:id>
<xs:latitude xmlns:xs="http://pharmacy.arce.org/xsd">$3</xs:latitude>
<xs:longitude xmlns:xs="http://pharmacy.arce.org/xsd">$4</xs:longitude>
</ax22:pharmacy>
</p:searchPhone>
</format>
<args>
<arg evaluator="xml" expression="//xsd:desc"/>
<arg evaluator="xml" expression="//xsd:id"/>
<arg evaluator="xml" expression="//xsd:latitude"/>
<arg evaluator="xml" expression="//xsd:longitude"/>
</args>
</payloadFactory>
<header name="Action" scope="default" value="urn:searchPhone"/>
<property name="SOAPAction" scope="transport" type="STRING" value=""/>
<log level="full" separator=",">
<property name="Data" value="Body"/>
</log>
</case>
<default>
<log description="Fault" level="custom" separator=",">
<property name="STATUS" value="Invoke fault "/>
</log>
<payloadFactory media-type="xml">
<format>
<rs:fault xmlns:rs="http://pharmacy.arce.org">
<rs:code>-1</rs:code>
<rs:type>Invocation error</rs:type>
<rs:message>No operation has been invoked</rs:message>
<rs:description>The value of the input parameter is not valid</rs:description>
</rs:fault>
</format>
<args/>
</payloadFactory>
<respond/>
</default>
</switch>
</inSequence>
这是默认部分
<default>
<log description="Fault" level="custom" separator=",">
<property name="STATUS" value="Invoke fault "/>
</log>
<payloadFactory media-type="xml">
<format>
<rs:fault xmlns:rs="http://pharmacy.arce.org">
<rs:code>-1</rs:code>
<rs:type>Invocation error</rs:type>
<rs:message>No operation has been invoked</rs:message>
<rs:description>The value of the input parameter is not valid</rs:description>
</rs:fault>
</format>
<args/>
</payloadFactory>
<respond/>
</default>
以及故障响应
{"fault":{"code":-1,"type":"Invocation error","message":"No operation has been invoked","description":"The value of the input parameter is not valid"}}
你可以在这里找到其他场景
http://harshcreationz.blogspot.com/2016/02/common-and-error-handling-sequences.html
关于WSO2 API 管理器 - 如何将错误/故障消息从 InSequence 发送回客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41893392/
我正在使用代理向 HL7 TCP/IP 端口发送消息,并在 outSequence 中获得响应。但我的问题是 inSequence 中设置的所有属性都不再可用。所有这些都是空的。我测试了所有不同的范围
在我的测试中添加 @InSequence 注释时出现错误: java.lang.UnsupportedOperationException at java.util.Collections$Unmod
我使用 WSO2 API 管理器 (StockQuoteService) 创建了一个 REST API,并配置了一个基于后端 SOAP 的 Web 服务(将 REST 转换为 SOAP),它将根据 U
我试图执行后续调用验证,我发现 moq 为此支持 InSequence() 方法,例如: MockSequence s = new MockSequence(); validator.InSequen
我正在使用 Arquillian: 1.1.5.Final 来对抗最新的 JUnit: 4.12。使用@InSequence注解的测试方法不能用作以下异常。 java.lang.Unsupported
我是一名优秀的程序员,十分优秀!