我应该为仅包含部分答案的REST响应使用什么HTTP状态代码?

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

说我正在构建一个服务于旧杂志内容的API。客户可以在给定日期之前请求最新版本的内容,例如:

GET /magazines/<some_magazine_id>?date=2015-03-15

响应包括有关杂志的常规数据,例如杂志的名称,发行国家/地区,创建日期...,如果我的数据库中的内容早于给定日期,则也会返回该杂志。

如果客户端请求的日期早于可用数据,我应该使用什么HTTP状态代码?当我扩展数据库的内容时,将来可能会有数据。因此,这是暂时的故障,但尚不清楚它需要花费多长时间才能修复。

基于onotherquestions,我觉得:

  • 404是不正确的:在某些情况下,我根本没有关于杂志的数据,in which case我会返回404。但这是不同的。我希望用户获取部分数据,但要表明它只是部分数据。
  • 4xx是客户端错误。我觉得客户没有做错任何事。
  • 206部分内容似乎在返回内容的range时显示,但不是全部。
  • [30x我曾考虑使用302或类似版本,但指向最接近的版本,但是再次,我不确定这是正确的,因为我现在指向的是与所问问题在语义上有所不同的事物。
  • 5xx将是错误,我认为不应包含任何数据。

我最好的猜测是类似2xx No Details Available (Yet)的内容,它表明请求“有些成功”,但是我找不到在the list中看起来正确的任何内容。

rest api http http-status-codes
1个回答
0
投票

我会得到200 OK。您确实找到了该杂志,并且正在返回有关它的数据。尽管您的数据不像以前那样完整,但它是可以理解的完整响应。大概您要返回一个空数组或nil引用所在的版本?

许多更具体的响应的问题在于,它们实际上是针对更底层的东西。您不返回部分内容,而是返回全部内容。只是更高级别的应用程序数据不如您希望的那样完整(未找到旧版本)。在REST / HTTP级别上,响应很好。

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