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

Goo*_*ide 5 rest http-status-codes

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

HTTP状态代码应该表达一些内容:"是的,您尝试访问的资源存在,但您必须等到某人批准才能使用.请稍后再试."

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

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

Man*_*mer 5

在说明中提到的条件指的是像HTTP头If-Match,If-Modified-Since,If-None-Match,If-RangeIf-Unmodified-Since因此使用412不会在你的情况适合.

如果Not approved资源根本不可用404,仅限于某些用户403或被锁定,我认为这取决于您的解释423.

我会说你的情况423 (Locked)(直到批准)才是正确的答案.