【问题标题】:Azure APIM "rewrite-uri" policy - How to remove the URL suffix?Azure APIM“rewrite-uri”策略 - 如何删除 URL 后缀?
【发布时间】:2019-06-16 07:15:42
【问题描述】:

我有一个 Azure APIM 面向公众的 URL 的要求 - https://api.example.com/api/v1/storenumber/ordernumber

后端服务网址(注意 - 这里没有网址路径后缀) - https://back-end.service.com

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

如何在 Azure APIM 策略中实现这一点?

谢谢, 阿尼什。

【问题讨论】:

    标签: azure-api-management


    【解决方案1】:

    假设您有主机名为 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,将操作模板设置为 /。这将导致面向公众的 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 模板。

    【讨论】:

    • 有效,但最后留下一个 /。有没有办法把那个也去掉?
    • 我找到了解决 / 问题的方法。只需将其替换为 ? 不确定是否有更优雅的解决方案,但这可以解决问题。
    猜你喜欢
    • 2018-10-29
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    • 2019-06-01
    • 2020-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多