Azure APIM策略URL重写:如何为后端添加v2版本标识
API网关URL重写:自动插入v2版本标识符
修正字符串替换写法
你之前的写法问题出在替换后的路径缺失开头的斜杠,导致路径格式错误。试试这个修正版:
<rewrite-uri template="@(context.Request.OriginalUrl.Path.Replace("/myapi/", "/myapi/v2/"))" />
它会把原路径里的/myapi/精准替换成/myapi/v2/,比如原请求/myapi/Polices/12/14会被重写成/myapi/v2/Polices/12/14,完美匹配需求。
更可靠的路径拼接写法
如果担心字符串替换可能出现的意外(比如路径其他位置包含/myapi/片段),可以用路径分段拼接的方式,逻辑更清晰:
<rewrite-uri template="@($"/myapi/v2/{string.Join("/", context.Request.OriginalUrl.Path.Split('/').Skip(2))}")" />
这个写法的逻辑是:把原路径按斜杠拆分成数组,跳过前两段(空字符串和myapi),把剩下的路径片段重新拼接,再和/myapi/v2/组合,不管后面的端点结构有多复杂,都能准确插入v2。
验证效果
不管用户请求的是https://bla.bla.com/myapi/Polices/12/14还是https://bla.bla.com/myapi/Producers/12,经过上述重写规则处理后,后端收到的请求路径都会自动加上v2前缀,变成你需要的格式。
内容的提问来源于stack exchange,提问作者Jcullen
相关产品推荐
相关产品推荐

