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

Ane*_*nan 7 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 策略中实现这一点?

谢谢,阿尼什。

Vit*_*tin 9

假设您有一个带有 hostname 的 APIM 服务my-service.azure-api.net。APIM 服务中的一个 API,带有 URL 后缀my-api,后端 URI 为https://my-backend.com. 并在此 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 方案+主机名+api 后缀替换为为相关 API 定义的后端 URI。

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

和此操作的后端 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="/" />
Run Code Online (Sandbox Code Playgroud)

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

  • 我找到了解决“/”问题的方法。只需将其替换为“?”,不确定是否有更优雅的解决方案,但这确实有效。 (4认同)