WSO2 ESB 无法获取 url 包含逗号的参数

WSO2 ESB cannot obtain url parameters that contains comma

在 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":""}</format>
            <args>
               <arg evaluator="xml" expression="get-property('params_list')"/>
            </args>
         </payloadFactory>
         <respond/>
      </inSequence>
   </resource>
</api>

当 URL:

访问时工作正常

http://localhost:8290/params/p?try=one

和响应{"res_body":"one"}

但是当通过这个 URL 访问时:

http://localhost:8290/params/p?try=one,two

它没有响应,似乎 ESB 没有处理请求,因为参数 "try=one,two" 用逗号分隔。

如何让 ESB 处理这个 URL?(参数用逗号分隔)

据我所知,当与 url 参数一起使用时,您需要使用 %2C 对逗号进行编码。 例如

http://localhost:8290/params/p?try=one%2Ctwo 

如果您通过 属性 获取参数列表,您将获得带有参数的 %2C 编码值。看看下面提到的工作示例。

 <resource methods="POST" uri-template="?sessionId={id}">
      <inSequence>
         <property name="sessionId" expression="$url:sessionId"/>

按照上面的方法一一提取参数