REST:资源处于错误状态 - 我应该返回哪种HTTP状态?

时间:2016-05-23 08:15:15

标签: rest http-status-codes

假设我的服务器公开了具有状态(Not approvedApprovedAuto-approved)的资源。如果资源处于状态Not approved,则它不应该可以访问客户端,即允许客户端知道资源的存在(它们无论如何),但是在资源处于正确状态之前应该被拒绝访问。

HTTP状态代码应该表达一些内容:“是的,您尝试访问的资源存在,但您必须等到有人批准。请稍后再试。”

在这种情况下应该返回什么HTTP状态代码?返回404 (Not found)似乎不对,因为资源实际上是存在的。状态代码412 (Precondition failed)听起来很合适,但the RFC谈论了很多关于HTTP标头......

  

412(Precondition Failed)状态代码表示一个或多个      请求标头字段中给出的条件评估为false时      在服务器上测试。此响应代码允许客户端放置      当前资源状态的先决条件(当前      表示和元数据),因此,防止请求方法      在目标资源处于意外状态时应用。

1 个答案:

答案 0 :(得分:5)

说明中提到的条件涉及HTTP标头,例如If-MatchIf-Modified-SinceIf-None-MatchIf-RangeIf-Unmodified-Since,因此使用{{1在你的情况下是不合适的。

如果412资源不可用Not approved,仅限于某些用户404或已锁定403,我认为这取决于您的解释。

我在您的情况下说423(直到批准)才是正确答案。