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

yka*_*gol 9 rest http-status-codes http-status json-api

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

在我们的情况下; 客户端是在浏览器上运行的Web应用程 我们更喜欢以下状态代码:

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

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

Cha*_*One 10

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

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

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

接收此警告的系统除了向用户显示警告外,不得采取任何自动操作.

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

  • [有人建议您的答案已被弃用](/sf/answers/5188702361/):“规范已更改,不再有“一般警告标头字段”。请参阅类似讨论(尽管它正在谈论“错误”)以下讨论:[返回http 200 OK,响应正文中出现错误](/sf/ask/1954507621/响应主体)” (2认同)