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

如何在Azure API Management中动态映射API请求路径至后端

Azure API Management 实现请求路径原样转发至后端

核心需求

将发送到APIM网关的请求(如GET https://something.azure-api.net/api/v1/getA)原样转发至后端服务,完整保留请求的URI路径部分,最终转发到http://example.org/api/v1/getA这类对应地址,支持多路径动态映射。

当前配置问题分析

你当前使用的策略逻辑本身正确,但可能存在API定义层面的配置缺失:

<policies>
    <inbound>
        <set-backend-service base-url="http://example.org/" />
        <base />
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

<set-backend-service>指定后端基础URL后,APIM默认会将请求的相对路径追加到该基础URL后,但前提是你的API路径模板要能捕获完整的请求路径。

正确配置步骤

1. 创建API时设置正确的路径模板

在APIM中创建API时,将路径模板设置为/*(如果所有请求都以/api开头,也可以设为/api/*),这样APIM会捕获请求的完整路径部分,而不会截断前缀。

2. 增强型策略配置(可选)

如果需要确保路径完全原样传递,可显式使用rewrite-uri策略强制保留完整路径(默认配置已满足需求,此为更严谨的增强方案):

<policies>
    <inbound>
        <set-backend-service base-url="http://example.org/" />
        <!-- 显式引用原始请求路径,强制同步到后端请求 -->
        <rewrite-uri template="@(context.Request.Url.Path)" copy-unmatched-params="true" />
        <base />
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

context.Request.Url.Path会获取原始请求的完整路径,通过rewrite-uri确保该路径完全同步到后端请求中。

验证方式

发送测试请求到APIM网关,查看后端服务的访问日志,确认请求路径与原始请求完全一致即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:28:20