我正在构建ReST to ReST代理服务。我需要能够将一些查询参数传递给与请求一起传入的服务。 E.g。
myhost.zz / proxyService富= 1和;巴= 2
当我定义这样的代理时 - 后来尝试提取' foo'我得到了。 那么有可能实现吗?
答案 0 :(得分:2)
你需要定义一个API(如果你真的想要代理服务,请看这个答案的结尾):
<api xmlns="http://ws.apache.org/ns/synapse" name="proxyService" context="/proxyService">
<resource methods="POST GET OPTIONS DELETE PUT">
<inSequence>
<property name="FORCE_SC_ACCEPTED" value="true" scope="axis2" type="STRING"></property>
<log level="custom">
<property name="foo" expression="get-property('query.param.foo')"></property>
<property name="bar" expression="get-property('query.param.bar')"></property>
</log>
</inSequence>
</resource>
</api>
使用此网址调用它:http://host:port/proxyService?foo=12&bar=14
查看wso2-esb-service.log:INFO __SynapseService foo = 12,bar = 14
在&#34;资源&#34;中,您可以定义一个uri-template(URL Style = uri-template),例如&#34; / {scope} / *&#34;然后当您使用http://host:port/proxyService/toto?foo=12&bar=14呼叫您的api时,您可以访问&#34;范围&#34;使用get-property(&#39; uri.var.scope&#39;)
发送REST请求,使用带有uri-template的http端点,使用相同的逻辑:uri-template="http://other_host:port/Service/{uri.var.scope}/truc?abc={query.param.foo}&dfc={query.param.bar}"
<强> - &GT; 强> 如果要使用代理服务,可以访问查询参数,如下所示:
请求:http://esb:8280/services/MonService?param1=val1¶m2=val2
<property name="PARAM1"
expression="tokenize(substring-after(syn:get-property('To'),'param1='),'&')"
scope="default"
type="STRING"/>
<property name="PARAM2"
expression="tokenize(substring-after(syn:get-property('To'),'param2='),'&')"
scope="default"
type="STRING"/>
答案 1 :(得分:0)
您可以使用synapse xpath变量$ url来读取查询参数值。 例如,检查这个[1]。