【问题标题】:REST - How to expose a file in a file repository project?REST - 如何在文件存储库项目中公开文件?
【发布时间】:2015-11-03 07:28:28
【问题描述】:

我正在编写一个简单的网络文件存储库项目。一个客户给我发了一个POST的文件:

POST /file
<binary data>

并获取文件的hash 作为响应。

他可以发送图像、文档等。我想为他提供一种从应用程序中使用哈希值检索这些文件的最佳方法。所以他可以打电话:

GET /file/{hash}

并检索binary 版本的文件。

或者也许更好的方法是给他文件属性,例如:

{
    type: "image/png"
    bytes: 1024,
    properties: [{
        width: 100,
        height: 200
    }]
}

然后在 URLs 下:

GET /file/{hash}?base64

他会得到Base64编码的文件,并且下

GET /file/{hash}?binary

会被二进制版本的文件响应吗?哪种方法更好、更 RESTful?

【问题讨论】:

标签: java rest


【解决方案1】:

我认为这取决于您的需求。如果您不需要额外的文件属性,我将使用前者。

顺便说一下,看看 Google Drive API,也许你会觉得鼓舞人心: https://developers.google.com/drive/v2/reference/

【讨论】:

    【解决方案2】:

    理论上,当您向POST 方法发送响应时,您应该返回一个ID,以及您收到的正文和201 Created HTTP 状态代码。当然,在这种特殊情况下它根本没有意义。所以:

    1. POST 请求的响应应标记为301 Moved Permanently 并具有Location(例如/files/{hash} 标头集,它指向客户端可以获取文件数据的端点。

      李> 1234563
    2. 应提供单独的端点(例如/files/{hash}/data/)以返回文件原始数据。客户端还应该可以设置它想要获取的数据格式,但不能仅通过查询参数名称(?binary?base64)而是使用键值对。 (?format=binary)。

    【讨论】:

      猜你喜欢
      • 2019-09-07
      • 2017-08-23
      • 1970-01-01
      • 2018-10-13
      • 1970-01-01
      • 2014-05-06
      • 2023-03-22
      • 2017-09-14
      • 2021-11-01
      相关资源
      最近更新 更多