带动态参数的WSO2 ESB REST

时间:2016-06-23 03:38:13

标签: wso2 wso2esb

我建立了一个API,它应该采用如下的动态参数,

<api xmlns="http://ws.apache.org/ns/synapse" name="MrlDatabaseAPI" context="/rest">
     <resource methods="OPTIONS GET" uri-template="/reportNotes?country={country}&amp;pesticide={pesticide}&amp;crop={crop}">
  <inSequence>
     <send>
        <endpoint>
           <http method="GET" uri-template="http://172.17.100.113/MRLService/rest/v1/reportNotes?country={uri.var.country}&amp;pesticide={uri.var.pesticide}&amp;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=ABA3000http://localhost/rest/reportNotes?country=AUS&crop=22020100

Restful Web服务本身可以接受任意数量的参数。

谢谢, 肖恩

1 个答案:

答案 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}&amp;crop={uri.var.crop}"/>
    </endpoint>
 </send>
  </then>
  <else>
      <drop/>
  </else>
</filter>

您可以使用此介体实现您的方案。