我需要在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和
操作的后端URIhttps://back-end.service.com/
当然,当你在API中有多个操作时,这种方法很难使用。在这种情况下,你需要使用以下策略:重写URL |MS DOC。为此,您可以将API后缀和操作URI模板设置为任何内容,但要将此策略添加到操作的入站部分:
<rewrite-uri template="/" />
重写URI策略的作用是覆盖后端请求的操作URI模板">
参考:Azure APIM "policy -如何删除URL后缀?