为什么 Azure API 管理会隐藏状态码 4** 和 5** 的响应体?

问题描述 投票:0回答:1

我在 Azure API 管理中创建了一个 API,我意识到 APIM 实际上隐藏了我在响应中返回的一些机构。我得到200,但我没有得到404、401或500。

我明白,最好控制返回的内容,我们不想给终端用户提供带有500错误体的HTML。

但是,我在我的API中使用404或401,我在响应体中返回了一些信息。有没有可能控制某些状态码返回的内容?

httpresponse http-status-codes azure-api-management
1个回答
0
投票

使用 set-body 策略来设置传入和传出请求的消息体。要访问消息正文,您可以使用 context.Request.Body 财产或 context.Response.Body根据策略是在入站还是出站部分。

您可以使用以下代码自定义响应体。

<when condition="@(context.Response.StatusCode == 404)">
    <return-response>
        <set-status code="404" reason="NotFound">
            <set-header name="Content-Type">
                <value>application/json</value>
            </set-header>
            <set-body>@{
                var response = context.Response.Body.As<JObject>();
                foreach (var key in new [] {"HTTP Error 404. The requested resource is not found."}) {
                response.Property (key).Remove ();
            }
            return response.ToString();
      }</set-body>
     </return-response>
</when>
© www.soinside.com 2019 - 2024. All rights reserved.