Azure API 管理 - 将请求映射到不同的响应代码
Azure API Management - Map Requests to different response codes
我已将外部 API 添加到 API 管理。 API 总是 return 的 200 响应,即使是错误的请求。响应有一个名为 status 的 属性,表示响应是正确的还是错误的请求
我可以根据此响应中的 'status' 属性 将 API 管理配置为 return 响应代码吗?那我该怎么做?
您可以使用 set-status 策略(设置 HTTP 状态代码)和 choose 策略(检查您的 属性 值)。查看 set-status documentation 了解详情。
Microsoft 文档中的以下示例显示了如何在授权令牌无效时return 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>
我已将外部 API 添加到 API 管理。 API 总是 return 的 200 响应,即使是错误的请求。响应有一个名为 status 的 属性,表示响应是正确的还是错误的请求
我可以根据此响应中的 'status' 属性 将 API 管理配置为 return 响应代码吗?那我该怎么做?
您可以使用 set-status 策略(设置 HTTP 状态代码)和 choose 策略(检查您的 属性 值)。查看 set-status documentation 了解详情。
Microsoft 文档中的以下示例显示了如何在授权令牌无效时return 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>