首页 > 解决方案 > Azure API 管理 - 将请求映射到不同的响应代码

问题描述

我在 API 管理中添加了一个外部 API。即使是错误的请求,API 也总是返回 200 响应。响应有一个名为 status 的属性,表示响应是否正常或是否是错误请求

我可以将 API 管理配置为根据此响应中的“状态”属性返回响应代码吗?那我该怎么做?

标签: azure-api-management

解决方案


您可以使用set-status策略(设置 HTTP 状态代码)和选择策略(检查您的属性值)。查看设置状态文档以获取详细信息。

Microsoft 文档中的以下示例显示了在授权令牌无效时如何返回 401 响应。

<choose>
  <when condition="@((bool)((IResponse)context.Variables["tokenstate"]).Body.As<JObject>()["active"] == false)">
    <return-response response-variable-name="existing response variable">
      <set-status code="401" reason="Unauthorized" />
      <set-header name="WWW-Authenticate" exists-action="override">
        <value>Bearer error="invalid_token"</value>
      </set-header>
    </return-response>
  </when>
</choose>

推荐阅读