Azure APIM网关正在修剪api url中的尾斜杠



我需要在APIM中托管的api中添加尾斜杠。然而,当将调用转发给后端服务时,APIM网关似乎正在删除末尾的斜杠。

示例1:

APIM网关URL:https://api.domain.com/getdata/

后端服务URL:https://mybackendservice.domain.com/getdata

示例2:

APIM网关URL:https://api.domain.com/getdata/?q=1&r=2

后端服务URL:https://mybackendservice.domain.com/getdata?q=1&r=2

谁能建议任何URL重写策略,我们可以添加保留尾斜杠,以便后端服务URL将是:

https://mybackendservice.domain.com/getdata/

https://mybackendservice.domain.com/getdata/?q=1&r=2

感谢Vitaliy Kurokhtin,将您的建议作为帮助其他社区成员的答案。

"假设您有主机名为my-service.azure-api.net的APIM服务。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中有多个操作时,这种方法很难使用。在这种情况下,你需要使用以下策略:重写URL |MS DOC。为此,您可以将API后缀和操作URI模板设置为任何内容,但要将此策略添加到操作的入站部分:

<rewrite-uri template="/" />

重写URI策略的作用是覆盖后端请求的操作URI模板">

参考:Azure APIM "policy -如何删除URL后缀?

最新更新