如何解决当 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(与您的相同)。
2. 然后点击“Add API”创建另一个api,我们可以用root
来命名。并将您的登录网址设置为“Web 服务网址”
3. 之后,在新创建的 api root
中添加操作。提供显示内容,然后在“URL”输入框中输入 /
。
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 举报,一经查实,本站将立刻删除。