[英]How to design a REST API to allow returning files with metadata
假设我正在设计一个REST API,我需要客户端能够获取带元数据的文件。 设计资源/运营的好方法是什么?
我想到了一些想法:
单个资源(即GET / files / {fileId}),它返回包含文件和带元数据的JSON / XML结构的多部分响应。 我觉得这不是一个很好的方法。 例如,您不能使用客户端的Accept标头来确定他们是否需要XML或JSON元数据表示,因为响应类型在两种情况下都是多部分的。
两个资源(即GET / files / {fileId}和GET / files / {fileId} / metadata),其中第一个返回文件本身,第二个是带有元数据的JSON / XML结构。 可以存在从元数据到文件的链接。 但是,如何将文件链接与文件一起发送?
我在以下API设计方面取得了成功。 这与您建议的略有不同,主要资源只包含指向其组件的链接。
POST /file
Request
<bytes of file>
Response
Location: /file/17
{
"id": 17
}
GET /file/17
{
"data": "/file/data/17",
"metadata": "/file/metadata/17"
}
GET /file/data/17
<bytes of file>
GET /file/metadata/17
{
"type": "image",
"format": "png"
}
DELETE /file/17
您的第一个选项根本不是一个好的选择,因为它违反了以下REST约束。
通过 统一接口原则下的这些表示来操纵资源 。
当客户端持有资源的表示(包括附加的任何元数据)时 ,它具有足够的信息来修改或删除资源。
如果你刹车的话。 您的网址不会被视为RESTful。
关于它的Wiki 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.