请求成功但有警告消息时合适的HTTP状态代码是什么?

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

正确使用REST时,请求成功但有警告消息时的HTTP状态码适合什么?

就我们而言;客户端是在浏览器上运行的 Web 应用程序。我们更喜欢如下状态代码:

  • 请求处理成功时的 HTTP 200、201、204
  • 请求违反某些业务规则时出现 HTTP 422
  • 处理请求时发生意外异常时的HTTP 500

但是我们无法确定当请求处理成功但需要向客户端发送一些信息或警告消息时应使用哪个状态代码?

rest http-status-codes json-api http-status
3个回答
23
投票

在 HTTP 协议中实际上有一个“警告”标头(请参阅标头字段定义)。 这些是 HTTP 警告,但您可以使用代码 199 发送您需要的内容:

199 其他警告 警告文本可能包含任意内容 要呈现给人类用户或记录的信息。

这里的问题是下一点规范:

收到此警告的系统不得采取任何自动操作,除了 向用户呈现警告。

因此,我认为您最好在响应内容中添加有关警告的数据(并继续使用 200 状态代码)。


1
投票

HTTP状态码决定请求是否正常进行,没有警告状态。如果您想提供有关内部功能结果的信息,您应该在响应内容中添加信息状态,例如:

{
    status: "WARNING",
    code: "WARNING-CODE"
}

0
投票

在类似的情况下,我使用了 HTTP 418(参见 HTCPCP

客户端是使用 Google Maps API 来显示地图图块的 Web 应用程序。我想区分故意空白的图块(零数据 -> HTTP 200 的空白图块)和因丢失数据而导致的空白图块(空数据 -> HTTP 418 的空白图块)。

返回 404 会阻止我在响应正文中发送图块,并且会在地图上放置难看的符号。但返回 418 仍然允许响应正文(可能是由于缺乏围绕 HTTP 418 的严格标准定义?),同时提供了一个状态代码,我可以轻松地在日志等中过滤该状态代码以用于诊断目的。

© www.soinside.com 2019 - 2024. All rights reserved.