如何通过Azure API Management产品将用户路由至不同后端主机名
解决方案:仅修改后端主机名实现环境路由
你可以通过结合APIM上下文变量与set-backend-service策略实现仅替换主机名、保留原始请求路径的需求,无需硬编码完整的后端URL。
针对不同产品的策略配置
- xyz-production产品(路由到生产环境):
<set-backend-service base-url="https://api.azurewebsites.net@{context.Request.Url.Path}" />
- xyz-acceptance产品(路由到验收环境):
<set-backend-service base-url="https://api.acc.azurewebsites.net@{context.Request.Url.Path}" />
原理说明
@{context.Request.Url.Path}是APIM的内置上下文变量,会自动捕获客户端请求的原始路径(比如/vendor、/session、/api),将其拼接在指定的主机名之后,完美匹配你“只改主机、路径复用”的需求。
扩展:处理查询参数
如果需要保留客户端请求的查询参数,可以追加@{context.Request.Url.Query}:
<set-backend-service base-url="https://api.azurewebsites.net@{context.Request.Url.Path}@{context.Request.Url.Query}" />
配置位置
将上述策略分别配置在xyz-production和xyz-acceptance的产品级别策略中,这样该产品下的所有API都会自动应用对应的路由规则。
内容的提问来源于stack exchange,提问作者Chaitanya
相关产品推荐
相关产品推荐

