为将来的资源选择正确的HTTP返回代码

为将来的资源选择正确的HTTP返回代码,http,rest,Http,Rest,对于不同的场景,我不确定哪个HTTP代码是正确的选择 客户机可以使用PUT将实体上载到预先已知的URI。然后,在服务器上处理实体,这可能需要一些时间(即转码/处理)。如果完成此操作,则资源在其上载到的URI下可用 现在,如果客户端在处理完成之前查询资源,我不确定返回哪个HTTP响应代码是正确的。我正在搜索与410 Gone相反的内容。由于应用程序体系结构的原因,不同的客户端将在处理完成之前知道URI(至少是进行上载的客户端) 此外,我不想使用WebDAV扩展代码,尽管会有一些有效的扩展代码 我有

对于不同的场景,我不确定哪个HTTP代码是正确的选择

客户机可以使用PUT将实体上载到预先已知的URI。然后,在服务器上处理实体,这可能需要一些时间(即转码/处理)。如果完成此操作,则资源在其上载到的URI下可用

现在,如果客户端在处理完成之前查询资源,我不确定返回哪个HTTP响应代码是正确的。我正在搜索与
410 Gone
相反的内容。由于应用程序体系结构的原因,不同的客户端将在处理完成之前知道URI(至少是进行上载的客户端)

此外,我不想使用WebDAV扩展代码,尽管会有一些有效的扩展代码

我有一些初步的想法,但我不知道哪一个最适合:

  • 307临时重定向
    重定向到占位符资源
  • 405不允许使用方法
    GET仅允许在以后使用=>客户端不能缓存此答案
  • 503服务不可用
    强调服务器端错误=>对于客户端来说,可能有点不清楚到底哪里出了问题
  • 还有别的想法吗

我应该选择什么?

您可以返回一个202 Accepted以响应初始PUT,然后在表示可用之前不向任何GET请求返回任何内容。

您的用例没有特定的HTTP代码。也许您想使用WebDAV的扩展:

423(锁定)状态代码表示方法的源或目标资源已锁定


返回202和一个响应主体,该响应主体包含一个状态和一个到可以监视该状态的资源的链接

当有人得到尚未准备好的资源时,使用307到temp。重定向到该监视页面


这要求客户端了解包含监控资源链接的实体媒体类型,因此在机器对机器系统中,如果使用HTML,您需要为此创建媒体类型,或者至少创建一些微格式。

正如我在问题中所述,我不想使用WebDAV代码。也考虑过这一点,然而,根据RFC2616:“此响应主要用于允许输入操作,而不会导致用户代理的活动文档视图发生更改,尽管任何新的或更新的元信息都应应用于当前用户代理的活动视图中的文档。”这真的是我想要表达的吗?它从一无所有变为一无所有,所以这似乎是有道理的。