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

What HTTP status code should I use for a REST response that only contains part of the answer?

假设我正在构建一个 API 来提供旧杂志的内容。客户端可以在给定日期之前请求最新版本的内容,例如:

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

响应包括关于杂志的一般数据,例如它的名称、发行国家/地区、创建日期...,如果我的数据库中有给定日期之前版本的内容,它 return也是。

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

基于on questions,我觉得:

我最好的猜测是 2xx No Details Available (Yet) 表示请求是 "somewhat successful",但我在 the list.[=21= 中找不到任何看起来正确的东西]

我会选择 200 OK。您确实找到了该杂志,并且正在返回有关它的数据。虽然您的数据并不像它可能的那样完整,但它是可以理解的完整响应。大概您要返回一个空数组或 nil 引用,而版本本来应该是什么?

许多更具体的响应的问题在于它们实际上是针对更底层的东西。您不是返回部分内容,而是返回全部内容。只是高层的应用资料没有你想象的那么完整(没找到旧版)。在 REST/HTTP 级别上,响应很好。