如何在WSO2 API Manager 2.6.0中判断并动态添加请求查询参数
在WSO2 API Manager 2.6.0中动态添加查询参数的消息中介方案
要实现根据原有请求是否带查询参数,自动选择用?或&拼接新参数的需求,可以通过以下Synapse中介序列配置完成:
核心中介序列配置
<sequence name="AddDynamicQueryParam" xmlns="http://ws.apache.org/ns/synapse"> <!-- 获取当前请求的路径及查询参数 --> <property name="REQUEST_URL_POSTFIX" expression="get-property('axis2','REST_URL_POSTFIX')"/> <!-- 判断URL是否已包含查询参数 --> <filter source="contains(get-property('REQUEST_URL_POSTFIX'), '?')" regex="true"> <then> <!-- 已有查询参数,用&拼接新参数 --> <property name="REST_URL_POSTFIX" expression="concat(get-property('REQUEST_URL_POSTFIX'), '&parameter=1')"/> </then> <else> <!-- 无查询参数,用?拼接新参数 --> <property name="REST_URL_POSTFIX" expression="concat(get-property('REQUEST_URL_POSTFIX'), '?parameter=1')"/> </else> </filter> </sequence>
配置说明
- 获取请求路径:通过
get-property('axis2','REST_URL_POSTFIX')获取当前请求的路径部分(包含原有查询参数,如果存在的话)。 - 判断参数存在性:使用
contains函数检查路径中是否包含?,以此区分两种拼接场景。 - 动态拼接参数:
- 若已有查询参数,用
&连接新参数(XML中需将&转义为&) - 若无查询参数,用
?作为参数起始符拼接新参数
- 若已有查询参数,用
在WSO2 AM 2.6.0中应用该序列
- 登录API Manager Publisher,打开目标API的编辑页面。
- 切换到Mediation Policies标签页,选择In Flow。
- 点击Add Sequence,选择Custom Sequence,粘贴上述XML配置并保存。
- 发布或重新发布API,使配置生效。
内容的提问来源于stack exchange,提问作者Bilal Ahmed
相关产品推荐
相关产品推荐

