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"/>
按照上面的方法一一提取参数
在 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"/>
按照上面的方法一一提取参数