【问题标题】:Appropriate use of a 204 HTTP Status Code正确使用 204 HTTP 状态码
【发布时间】:2020-04-05 05:09:34
【问题描述】:

我正在阅读 RFC,但不能完全确定以下是否适合使用 204 响应代码。

204 响应允许服务器指示该操作已被执行 成功应用于目标资源,同时暗示 用户代理不需要遍历其当前的“文档 视图”(如果有的话)。服务器假定用户代理将提供 向其用户表明成功的一些迹象,与它自己的一致 接口,并在响应中应用任何新的或更新的元数据 它的主动表示。

我有一个控制器,它返回一组 x 和 y 轴值,以根据用户历史数据绘制图表。

假设用户没有历史数据或少于2个点,无法绘制图表。

我应该:

  1. 返回正文中包含“NO_CONTENT”的 204。
  2. 返回一个 200 和一个空 x 和 y 值数组的对象。
  3. 返回 200 但带有“NO_CONTENT”或空正文。

感谢您的澄清。

【问题讨论】:

  • 204 本身意味着没有内容,因此您的响应正文应该为空
  • 我认为这主要是个人喜好问题。我会投票给 2 => 200,其中空数组 [] 作为响应正文。

标签: rest http httpresponse


【解决方案1】:

如果您想真正具体地回复您的回复,那么您应该在发送回复之前检查您的条件并使用匹配的状态代码。

  1. 如果控制器返回一个数组。然后 200
  2. 如果控制器没有足够的数据返回。然后 204 带有一条消息。

但是,如果第二个条件为真,我建议使用带有消息的 5xx 状态。但这只是我的意见,将取决于您的具体用例。

【讨论】:

  • 绝对不是 5xx。 5xx 是服务器处于意外错误状态时。我的代码确定没有足够的信息,因此服务器完全理解请求并适当地处理它而没有异常/错误。
  • @Jcov 我同意这将取决于您的具体用例。但我只是想指出,在服务器没有足够信息来产生有效响应的情况下,5xx 状态也可以作为一个选项。
猜你喜欢
  • 1970-01-01
  • 2016-10-24
  • 1970-01-01
  • 1970-01-01
  • 2016-03-22
  • 2013-12-06
  • 2012-02-28
  • 2012-09-10
  • 1970-01-01
相关资源
最近更新 更多