Azure API Management:如何配置未传版本头时默认初始版本?
解决方案:在Azure APIM中为旧版本API设置版本头默认值
当然可以实现!你遇到的问题是因为给现有API创建新版本后,旧版本的API配置被自动设置为要求版本头,但原有调用方没有传递这个头,导致路由失败。我们可以通过APIM的入站策略来自动补全缺失的版本头,让无版本头的请求默认路由到初始版本。
具体实现步骤:
- 登录Azure API Management门户,定位到你的旧版本API(也就是原来兼容无版本头的那个版本)
- 切换到「设计」标签页,找到「入站处理」模块,点击打开策略编辑器
- 在
<inbound>节点内(<base />之后)添加以下策略代码,替换成你实际的版本头名称和初始版本号:
<inbound> <base /> <!-- 自动为缺失版本头的请求添加初始版本值 --> <set-header name="你的版本头名称" exists-action="skip"> <value>@{ // 获取请求中的版本头值,为空则返回初始版本号 var versionHeader = context.Request.Headers.GetValueOrDefault("你的版本头名称", ""); return string.IsNullOrEmpty(versionHeader) ? "v1" : versionHeader; }</value> </set-header> </inbound>
- 保存策略后,测试不带版本头的请求——此时APIM会自动为请求添加你指定的初始版本头,旧版本API就能正常匹配路由,不会再返回「资源未找到」错误。
补充说明:
如果你的API是通过API版本集管理的,也可以检查版本集的配置:在版本集设置中,确保将旧版本设置为「默认版本」,这样当请求没有指定版本时,APIM会自动路由到这个默认版本。不过上面的策略方式更直接,能快速解决当前的头缺失问题。
内容的提问来源于stack exchange,提问作者Silly John
相关产品推荐
相关产品推荐

