多页文档作为REST上的图像(附加问题)

时间:2015-01-23 10:23:19

标签: api rest

我读到了这个问题 - Multi-page document as images over REST,答案非常好。我们有类似的情况,但有一些额外的要求。

  1. 请求可以将文档作为二进制数据返回,也可以在某处上传pdf / jpeg并返回上传文件的URL。 这些电话应该如何不同?我想到的是在上传和返回URL时使用GET进行二进制数据响应和POST。当它是POST时,它将返回201(已创建)并将URL返回到上载的文档。

  2. 还有一个关于第一点的细节。上传并返回URL时,我们可以上传临时用法(并在一段时间后删除)或将其永久保存。我们应该通过添加查询参数来完成吗?喜欢 - POST /documents/12345.pdf?permanent=true

  3. 与原始问题一样,我们也为每个页面返回不同的jpeg。但是创建文档的过程非常耗时,因此我们希望在一个请求中获取所有页面。这样做的正确方法是什么?我认为在201回复中你只能返回一个URL。

  4. GET /documents/12345.pdf方法是接受标头的一个很好的替代方法还是还有其他方法?使用斜杠而不是点更好,比如GET /documents/12345/pdf?这样就不需要解析“12345.pdf”字符串了。

  5. 谢谢!

1 个答案:

答案 0 :(得分:1)

在过去的两年里,我学到了一两件事让我们看看能不能抓住这个......

  1. 您可以使POST请求始终返回新创建的资源的URI。如果您是第一个提供二进制文件的人,您是否需要POST才能返回二进制文件?在这种情况下,我认为我正在跟踪你,GET将返回二进制文件,POST将创建资源并返回新创建资源的位置(URI)。
  2. 这不是RESTful,因为GET应该是安全的(GET不会修改资源)。如果您想在事后更新状态或POST时可以在请求正文中添加标记以标记它应该是永久性的,则可以将其设为PUT。可以找到有关发布图像和数据的信息here
  3. 对于#3,您想在一个请求中获取或上传所有内容吗?您可以在响应中返回任何内容。您可以通过这种方式构造您的请求以返回URL的json数组。例如,如果您构造的请求类似于我的示例,则GET /documents/12345/1可能会返回文档12345的第1页,而GET / documents / 12345可能会将所有页面返回到文档12345.
  4. 对于#4,我不会做/ pdf,因为它代表资源层次结构。 PDF仅是文档的表示,而不是实际文档。我会投票查询,因为可能有其他属性。例如,假设尝试使用斜杠执行以下操作... GET /documents/12345?format=pdf&color=grayscale&quality=300dpi&layout=portrait