【发布时间】:2012-04-05 09:15:57
【问题描述】:
我正在开发一个 RESTful API,其中http://server/thingyapi/thingyblob/1234 返回与thingy #1234 关联的文件(又名“blob”)以供下载。但可能是在服务器中不存在文件时发出请求,但绝对将在以后可用。服务器中有一个批处理过程,可以为所有事物生成所有 blob。 Thingy 1234 已经存在,并且它的数据(而不是 blob)已经可用。服务器还没有生成 1234 的 blob。
我不想返回 404;那是为了不存在的东西。这是一个存在的东西,但它的 blob 尚未生成。有点像正在“处理”的 YouTube 视频。我认为重定向代码也不合适;没有“其他”网址可供尝试。
在这种情况下返回的正确 HTTP 状态代码是什么?
【问题讨论】:
-
首先,如果 thingy 1234 还没有任何 GET-able 表示,它在什么意义上作为资源存在(从客户端的角度来看)?事实上,在服务器内部有一个队列作业来创建 1234,这似乎并不意味着资源 1234 存在。其次,客户端从哪里获得 URI .../thingyblob/1234?在资源实际上可以获取之前,服务器可能不应该向客户端提供该 URI。
-
HTTP 标准提供了有关在哪些情况下使用哪些状态代码的指南。因此,这个问题并非真正主要基于意见。
-
204“无内容”怎么样? Is 表示服务器已经成功处理了请求并且[此时]没有返回任何内容。 -
这是如何基于意见的?有一套非常清晰的代码可以使用。
标签: http rest language-agnostic batch-processing http-status-codes