要版本RESTful服务,我想使用URL重写模块执行以下操作;
地图https://server/service/如果Accept标头(HTTP_Accept?)是application/vnd.mycompany.service+xml
对于服务的下一个版本,我想增加媒体类型的版本号,并部署v2,这样我就可以进行以下映射:
地图https://server/service/如果Accept标头(HTTP_Accept?)是application/vnd.mycompany.service-2+xml
我尝试了以下规则,但无法使其发挥作用:
<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>
感谢您的帮助!
--报警
由于不熟悉URL重写机制,我无法直接帮助您,但是,如果您使用Web API托管服务,那么HttpMessageHandler将能够基于接受头进行这种URL转换。
解决了它。
a) 不知怎么的,重定向模块没有连接到applicationHost.config中。b) 以下配置有效:
<rule name="Route request to correct service version" patternSyntax="Wildcard">
<match url="*service*" />
<conditions logicalGrouping="MatchAny" trackAllCaptures="true">
<add input="{HTTP_ACCEPT}" pattern="*application/vnd.mycompany.*" />
</conditions>
<action type="Rewrite" url="service/v1{R:2}" logRewrittenUrl="true" />
</rule>
c) 在{R:2}变量之前,我有一个额外的斜杠,导致重写的url有一个双斜杠。
--报警