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

时间:2010-02-04 15:38:55

标签: http rest

我不确定哪种HTTP代码是不同场景的正确选择。

客户端可以使用PUT将实体上传到预先知道的URI。然后,在服务器上处理该实体,这可能花费一些时间(即,代码转换/处理)。如果这样做,则资源在已上载的URI下可用。

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

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

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

  • 307 Temporary Redirect重定向到占位符资源。
  • 405 Method Not Allowed GET仅允许以后使用=>客户端不得缓存此答案。
  • 503 Service Unavailable强调服务器端错误=>也许有些不清楚客户究竟出了什么问题。
  • 还有其他想法吗?

我应该选择什么?

3 个答案:

答案 0 :(得分:3)

在表示可用之前,您可以返回202 Accepted以响应初始PUT,然后将204 No Content返回给任何GET请求。

答案 1 :(得分:0)

您的用例没有特定的HTTP代码。也许你想使用WebDAV的扩展名423 LOCKED

  

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

答案 2 :(得分:0)

返回202和一个响应正文,其中包含状态和指向可监视状态的资源的链接。

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

这要求客户端了解包含监视资源链接的实体媒体类型,因此在机器到机器系统中,如果使用HTML,则需要为此或至少某些微格式编制媒体类型。