微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当 API URL 后缀未传递给我的 API 管理时,如何强制执行 URL 重定向

如何解决当 API URL 后缀未传递给我的 API 管理时,如何强制执行 URL 重定向

我已经查看了 azure APIM 的重写 URL,但我不知道这是否是正确的方法,因为它看起来更适合操作

我有一个带有 2 个 API 的 API 管理实例 (https://my-apim.azure-api.net):

AP1 1:- https://my-apim.azure-api.net/api1

AP1 2:- https://my-apim.azure-api.net/api2

如果我的 APIM 在没有 API 后缀(例如“/api2”)的情况下被调用,我想实现 APIM 重定向登录页面(例如 https://www.mywebsite.com/login)的情况。

我该怎么做?

解决方法

根据您的要求,rewrite-uri 政策似乎无法实施。请参考我下面的步骤:

1.我的 APIM 实例中有两个 api(与您的相同)。

enter image description here

2. 然后点击“Add API”创建另一个api,我们可以用root来命名。并将您的登录网址设置为“Web 服务网址

enter image description here

3. 之后,在新创建的 api root 中添加操作。提供显示内容,然后在“URL”输入框中输入 /

enter image description here

4.现在您可以测试请求您的 APIM url https://my-apim.azure-api.net 而不使用 api1/api2,它将重定向到您的登录页面。

,

针对 APIM 收到的每个请求执行“所有 API”策略。如果收到的请求与 APIM 中注册的任何操作不匹配,则执行 on-error 部分,以及其他情况。请参阅有关如何处理 404 等错误的文档:https://docs.microsoft.com/en-us/azure/api-management/api-management-error-handling-policies,但简而言之,在所有 API 范围内将类似以下内容添加到 on-error 应该可以解决问题:

<choose>
  <when condition="@(context.LastError.Reason == "OperationNotFound")">
    <return-response>
      <set-status code="307" reason="Temporary Redirect"/>
      <set-header name="Location" exists-action="override">
        <value>https://www.mywebsite.com/login</value>
      </set-header>
    </return-response>
  </when>
</choose>

当未提供后缀时,您可以实施额外的检查以专门针对特定场景,但以上将涵盖 URI 中的任何操作不匹配时的所有情况。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。