要对 RESTful 服务进行版本控制,我想使用 URL 重写模块执行以下操作;
如果 Accept 标头 (HTTP_ACCEPT?) 是 application/vnd.mycompany.service+xml,则将https://server/service/映射到 server/service/v1/
对于服务的下一个版本,我想增加媒体类型的版本号,并部署一个 v2,以便我可以做以下映射:
如果 Accept 标头 (HTTP_ACCEPT?) 为 application/vnd.mycompany.service-2+xml,则将https://server/service/映射到 server/service/v2/
我已经尝试了以下规则,但我无法让它工作:
<rules>
<rule name="Route request to correct service version" patternSyntax="Wildcard">
<match url="*service*" />
<conditions>
<add input="{HTTP_ACCEPT}" pattern="application/vnd.mycompany.*" />
</conditions>
<action type="Rewrite" url="Service/v1/{R:2}" logRewrittenUrl="true" />
</rule>
</rules>
任何帮助表示赞赏!
--larsw