我在 Azure API 管理中创建了一个 API,我意识到 APIM 实际上隐藏了我在响应中返回的一些机构。我得到200,但我没有得到404、401或500。
我明白,最好控制返回的内容,我们不想给终端用户提供带有500错误体的HTML。
但是,我在我的API中使用404或401,我在响应体中返回了一些信息。有没有可能控制某些状态码返回的内容?
使用 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>