You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WSO2 API Manager中替换请求URL的特定路径段?

在WSO2 API Manager中实现路径部分重写的方案

针对你需要将mywso2:8243/example/v1/tag/{tagName}格式的请求转发到myserver:8080/process/tag/v1/{tagName}的需求,可通过以下步骤实现:

1. 创建基础API

在WSO2 APIM Publisher控制台新建API:

  • 上下文(Context)设为/example/v1
  • API版本设为v1
  • 名称等其他信息按需填写

2. 定义通用资源

在API的“Resources”页面添加资源:

  • 方法:选择GET和POST(可分别添加或选“ANY”覆盖所有方法)
  • 资源路径:设为/tag/{tagName}({tagName}作为路径变量,匹配test、anothertest这类动态值)

3. 配置后端端点

进入“Endpoints”页面,添加一个HTTP/HTTPS类型的端点:

  • 端点地址设为http://myserver:8080/process/tag/v1/(注意末尾保留斜杠,后续路径变量会自动拼接)

4. 构建路径重写入站序列

在API的“Sequences”页面创建入站序列,用于修改请求路径:

<sequence xmlns="http://ws.apache.org/ns/synapse" name="TagPathRewriteSequence">
    <!-- 提取路径中的tagName变量,并重写URI -->
    <rewrite>
        <rewriteURI uri-template="/process/tag/v1/{uri.var.tagName}"/>
    </rewrite>
    <send/>
</sequence>

如果需要兼容更多动态路径场景,也可以用正则截取的方式:

<sequence xmlns="http://ws.apache.org/ns/synapse" name="TagPathRewriteSequence">
    <!-- 截取/tag/之后的路径部分 -->
    <property name="REST_URL_POSTFIX" expression="fn:substring-after(get-property('REST_URL_POSTFIX'), '/tag/')"/>
    <!-- 重写为目标路径 -->
    <rewrite>
        <rewriteURI uri-template="/process/tag/v1/{get-property('REST_URL_POSTFIX')}"/>
    </rewrite>
    <send/>
</sequence>

5. 关联序列到资源

回到“Resources”页面,编辑已创建的/tag/{tagName}资源:

  • 在“In Sequence”下拉框中选择刚才创建的TagPathRewriteSequence
  • 保存配置

6. 发布并验证

将API发布到Store,订阅后使用测试工具(如APIM Store的Test功能、Postman)发送请求:

  • 调用GET mywso2:8243/example/v1/tag/test,验证后端是否收到GET myserver:8080/process/tag/v1/test
  • 调用POST mywso2:8243/example/v1/tag/anothertest,验证后端是否收到对应POST请求

内容的提问来源于stack exchange,提问作者EnricoNiccoli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 18:10:17