我建立了一个API,它应该采用如下的动态参数,
<api xmlns="http://ws.apache.org/ns/synapse" name="MrlDatabaseAPI" context="/rest">
<resource methods="OPTIONS GET" uri-template="/reportNotes?country={country}&pesticide={pesticide}&crop={crop}">
<inSequence>
<send>
<endpoint>
<http method="GET" uri-template="http://172.17.100.113/MRLService/rest/v1/reportNotes?country={uri.var.country}&pesticide={uri.var.pesticide}&crop={uri.var.crop}"/>
</endpoint>
</send>
</inSequence>
现在资源只有在传递所有三个参数http://localhost/rest/reportNotes?country=AUS&pesticide=ABA3000&crop=22020100时才有效。
如何调整API并使其接受任何两个参数,例如: http://localhost/rest/reportNotes?country=AUS&pesticide=ABA3000或http://localhost/rest/reportNotes?country=AUS&crop=22020100
Restful Web服务本身可以接受任意数量的参数。
谢谢, 肖恩
答案 0 :(得分:1)
根据您的配置,任何数量的参数都无法解决。
您可以使用“过滤器”介体解决问题
例如:
<filter source="boolean(get-property('uri.var.pesticide'))" regex="false">
<then>
<send>
<endpoint>
<http method="GET" uri-template="http://172.17.100.113/MRLService/rest/v1/reportNotes?country={uri.var.country}&crop={uri.var.crop}"/>
</endpoint>
</send>
</then>
<else>
<drop/>
</else>
</filter>
您可以使用此介体实现您的方案。