对于仅包含部分答案的 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,我觉得:
404
是不对的:在某些情况下,我根本没有关于杂志的数据,in which case 我会 return 一个 404。但这是不同的。我希望用户获得部分数据,但表明它只是部分数据。
4xx
是客户端错误。感觉客户没做错什么。
206
returning range 内容时似乎显示了部分内容,但不是全部。
30x
我考虑过使用 302 或类似的版本,并指向最接近的可用版本,但同样,我不确定这是正确的,因为我现在指向的是语义上与问的问题。
5xx
会报错,我觉得不应该包含任何数据。
我最好的猜测是 2xx No Details Available (Yet)
表示请求是 "somewhat successful",但我在 the list.[=21= 中找不到任何看起来正确的东西]
我会选择 200 OK。您确实找到了该杂志,并且正在返回有关它的数据。虽然您的数据并不像它可能的那样完整,但它是可以理解的完整响应。大概您要返回一个空数组或 nil 引用,而版本本来应该是什么?
许多更具体的响应的问题在于它们实际上是针对更底层的东西。您不是返回部分内容,而是返回全部内容。只是高层的应用资料没有你想象的那么完整(没找到旧版)。在 REST/HTTP 级别上,响应很好。
假设我正在构建一个 API 来提供旧杂志的内容。客户端可以在给定日期之前请求最新版本的内容,例如:
GET /magazines/<some_magazine_id>?date=2015-03-15
响应包括关于杂志的一般数据,例如它的名称、发行国家/地区、创建日期...,如果我的数据库中有给定日期之前版本的内容,它 return也是。
如果客户端请求数据的日期早于我可用的日期,我应该使用什么 HTTP 状态代码?当我扩展数据库的内容时,我将来可能会有数据。所以这是一种暂时性的故障,但尚不清楚需要多长时间才能修复。
基于on
404
是不对的:在某些情况下,我根本没有关于杂志的数据,in which case 我会 return 一个 404。但这是不同的。我希望用户获得部分数据,但表明它只是部分数据。4xx
是客户端错误。感觉客户没做错什么。206
returning range 内容时似乎显示了部分内容,但不是全部。30x
我考虑过使用 302 或类似的版本,并指向最接近的可用版本,但同样,我不确定这是正确的,因为我现在指向的是语义上与问的问题。5xx
会报错,我觉得不应该包含任何数据。
我最好的猜测是 2xx No Details Available (Yet)
表示请求是 "somewhat successful",但我在 the list.[=21= 中找不到任何看起来正确的东西]
我会选择 200 OK。您确实找到了该杂志,并且正在返回有关它的数据。虽然您的数据并不像它可能的那样完整,但它是可以理解的完整响应。大概您要返回一个空数组或 nil 引用,而版本本来应该是什么?
许多更具体的响应的问题在于它们实际上是针对更底层的东西。您不是返回部分内容,而是返回全部内容。只是高层的应用资料没有你想象的那么完整(没找到旧版)。在 REST/HTTP 级别上,响应很好。