假设我的服务器公开了具有状态(Not approved
,Approved
,Auto-approved
)的资源。如果资源处于状态Not approved
,则它不应该可以访问客户端,即允许客户端知道资源的存在(它们无论如何),但是在资源处于正确状态之前应该被拒绝访问。
HTTP状态代码应该表达一些内容:“是的,您尝试访问的资源存在,但您必须等到有人批准。请稍后再试。”
在这种情况下应该返回什么HTTP状态代码?返回404 (Not found)
似乎不对,因为资源实际上是存在的。状态代码412 (Precondition failed)
听起来很合适,但the RFC谈论了很多关于HTTP标头......
412(Precondition Failed)状态代码表示一个或多个 请求标头字段中给出的条件评估为false时 在服务器上测试。此响应代码允许客户端放置 当前资源状态的先决条件(当前 表示和元数据),因此,防止请求方法 在目标资源处于意外状态时应用。
答案 0 :(得分:5)
说明中提到的条件涉及HTTP标头,例如If-Match
,If-Modified-Since
,If-None-Match
,If-Range
或If-Unmodified-Since
,因此使用{{1在你的情况下是不合适的。
如果412
资源不可用Not approved
,仅限于某些用户404
或已锁定403
,我认为这取决于您的解释。
我在您的情况下说423
(直到批准)才是正确答案。