在WSO2 ESB 490中,我编写了简单的API:
<api xmlns="http://ws.apache.org/ns/synapse" name="paramsTest" context="/params">
<resource methods="GET" uri-template="/p?try={params_list}">
<inSequence>
<property name="params_list" expression="get-property('uri.var.params_list')"/>
<log level="full">
<property name="The input params : " expression="get-property('params_list')"/>
</log>
<payloadFactory media-type="json">
<format>{"res_body":"$1"}</format>
<args>
<arg evaluator="xml" expression="get-property('params_list')"/>
</args>
</payloadFactory>
<respond/>
</inSequence>
</resource>
</api>
通过网址访问时效果很好:
http://localhost:8290/params/p?try=one
和回复{“res_body”:“一个”}
但是当通过此URL访问时:
http://localhost:8290/params/p?try=one,two
它没有响应,似乎ESB没有处理请求,因为参数“try = one,two”以逗号分隔。
如何让ESB处理此URL?(参数以逗号分隔)
答案 0 :(得分:2)
AFAIK使用url params时需要使用%2C对逗号进行编码。 例如
http://localhost:8290/params/p?try=one%2Ctwo
答案 1 :(得分:1)
如果通过属性获取参数列表,您将获得带参数的%2C编码值。看看下面提到的工作示例。
<resource methods="POST" uri-template="?sessionId={id}">
<inSequence>
<property name="sessionId" expression="$url:sessionId"/>
如上所述逐一提取参数。