我可以使用Validate mediator来验证同一API中的不同资源(不同的json方案)吗?
答案 0 :(得分:0)
是的,您可以使用它。您需要按照https://docs.wso2.com/display/AM210/Adding+Mediation+Extensions中的说明使用自定义序列。最好将API管理器中进行的冥想最小化。如果您需要进行大量调解,最好将调解部分移至另一个调解引擎,例如WSO2 ESB。
答案 1 :(得分:0)
经过研究,我设法构建了以下调解器。
<?xml version="1.0" encoding="UTF-8"?>
<sequence name="validateSomething" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
<log level="custom">
<property expression="get-property('API_ELECTED_RESOURCE')" name="API_ELECTED_RESOURCE"/>
<property expression="get-property('api.ut.HTTP_METHOD')" name="api.ut.HTTP_METHOD"/>
</log>
<switch source="get-property('API_ELECTED_RESOURCE')">
<case regex="/v1/myResource/\{id\}">
<filter regex="GET" source="get-property('api.ut.HTTP_METHOD')">
<then>
<validate>
<schema key="conf:/schema/ObjectSchema.json"/>
<on-fail>
<payloadFactory media-type="json">
<format>{"Error validating JSON returned by the Backend":$1}</format>
<args>
<arg evaluator="xml" expression="$ctx:ERROR_MESSAGE"/>
</args>
</payloadFactory>
<property name="HTTP_SC" scope="axis2" type="STRING" value="500"/>
<respond/>
</on-fail>
</validate>
</then>
<else/>
</filter>
</case>
<default>
<respond/>
</default>
</switch>
</sequence>