【问题标题】:Azure APIM Gateway is trimming the trailing slash in the api urlAzure APIM 网关正在修剪 api url 中的尾部斜杠
【发布时间】:2021-09-16 23:53:19
【问题描述】:

我需要向 APIM 中托管的 API 添加斜杠。但是,APIM 网关在将调用转发到后端服务时似乎正在删除尾部斜杠。

示例 1

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

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

示例 2

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

后端服务网址: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

【问题讨论】:

    标签: azure-api-management


    【解决方案1】:

    谢谢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 中有多个操作时,这种方法更难使用。在这种情况下,您需要使用策略:Rewrite URL |MS DOC。为此,您可以将 API 后缀和操作 URI 模板设置为任何内容,但将此策略添加到操作的入站部分:

    <rewrite-uri template="/" />
    
    

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

    参考: Azure APIM "rewrite-uri" policy - How to remove the URL suffix?

    【讨论】:

      猜你喜欢
      • 2022-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-11
      相关资源
      最近更新 更多