我正在编写简单的Web文件存储库项目。客户端向我发送了一个POST
的文件:
POST /file
<binary data>
并获取该文件的hash
作为回复。
他可以发送图像,文档等。我想为他提供一个从哈希应用程序中检索这些文件的最佳方法。所以他可以致电:
GET /file/{hash}
并检索binary
版文件。
或许更好的方法是给他文件属性,如:
{
type: "image/png"
bytes: 1024,
properties: [{
width: 100,
height: 200
}]
}
然后在网址下:
GET /file/{hash}?base64
他将获得Base64编码文件,并在
下GET /file/{hash}?binary
将二进制版文件响应?哪种方法更好,更RESTful?
答案 0 :(得分:1)
我认为这取决于您的需求。如果你不需要额外的文件属性,我会选择前者。
顺便说一下,也许你会发现鼓舞人心的看看Google Drive API: https://developers.google.com/drive/v2/reference/
答案 1 :(得分:1)
理论上,当您向POST
方法发送回复时,您应该返回ID
,以及您收到的正文和201 Created
HTTP状态代码。当然,在这种特殊情况下,它根本没有意义。所以:
对POST
请求的响应应标记为301 Moved Permanently
并且Location
(例如/files/{hash}
标头设置为指向客户端可以获取文件的端点数据
如果客户端从提到的Location
标头请求URL,它可能会收到带有基本文件描述的JSON内容(大小,内容类型,哈希,无论需要什么)
应提供单独的端点(例如/files/{hash}/data/
)以返回文件原始数据。客户端也应该可以设置它想要获取的数据格式,但不能仅通过查询参数名称(?binary
,?base64
),而是使用键值对。 (?format=binary
)。