Azure APIM“ rewrite-uri”策略-如何删除URL后缀?

时间:2019-01-22 18:52:13

标签: azure-api-management

在具有Azure APIM面向公众的URL-https://api.example.com/api/v1/storenumber/ordernumber

上,我有一个要求

后端服务URL(通知-此处没有URL路径后缀)-https://back-end.service.com

所以我需要在APIM中删除“ / api / v1 / storenumber / ordernumber”。

如何在Azure APIM策略中实现此目标?

谢谢, 阿内什。

1 个答案:

答案 0 :(得分:1)

假设您具有主机名my-service.azure-api.net的APIM服务。 URL的后缀为my-api,后端URI为https://my-backend.com的APIM服务中的API。以及此API中带有URI模板my/uri/template的操作。

所以要打来电话

https://my-service.azure-api.net/my-api/my/uri/template

没有任何其他配置的APIM服务将呼叫

https://my-backend.com/my/uri/template

因为默认情况下,APIM服务将源URI scheme + hostname + api后缀替换为为该API定义的后端URI。

在最简单的情况下,如果您的API只有一个操作,则可以将API后缀设置为api/v1/storenumber/ordernumber,将操作模板设置为/。这将导致面向公众的URI https://api.example.com/api/v1/storenumber/ordernumber

和此操作的后端URI

https://back-end.service.com/

当然,当您在API中进行多个操作时,这种方法更难使用。在这种情况下,您需要使用以下策略:https://docs.microsoft.com/en-us/azure/api-management/api-management-transformation-policies#RewriteURL。为此,您可以将API后缀和操作URI模板设置为任何内容,但将此策略添加到操作的入站部分:

<rewrite-uri template="/" />

rewrite-uri策略的作用是为后端请求覆盖操作URI模板。