【发布时间】:2020-03-15 16:00:34
【问题描述】:
假设我正在构建一个服务于旧杂志内容的 API。客户可以在给定日期之前请求最新版本的内容,例如:
GET /magazines/<some_magazine_id>?date=2015-03-15
响应包括有关杂志的一般数据,例如它的名称、发行国家、创建日期...,如果我的数据库有内容可用于给定日期之前的版本,它也会返回它.
如果客户端在我有任何可用数据之前请求某个日期的数据,我应该使用什么 HTTP 状态代码?当我扩展数据库的内容时,我将来可能会有数据。所以这是一种暂时的故障,但还不清楚它可能需要多长时间才能修复。
-
404不对:在某些情况下,我根本没有关于杂志的数据,in which case 我会返回 404。但这是不同的。我希望用户获取部分数据,但表明它只是部分数据。 -
4xx是客户端错误。我觉得客户没有做错什么。 -
206Partial Content 似乎在返回 range 的内容时显示,但不是全部。 -
30x我曾考虑使用 302 或类似版本,并指出最接近的可用版本,但我再次不确定这是否正确,因为我现在指向的内容与所提出的问题在语义上有所不同。 -
5xx会出错,我认为不应该包含任何数据。
我的最佳猜测是 2xx No Details Available (Yet) 表示请求“有点成功”,但我在 the list 中找不到任何似乎正确的内容。
【问题讨论】:
-
对我来说听起来像是一个简单的
200 OK。
标签: rest api http http-status-codes