如何设计REST API以允许返回带有元数据的文件

Duš*_*ský 5 rest

假设我正在设计REST API,并且我需要客户端能够获取带有元数据的文件。设计资源/运营的好方法是什么?

我想到了一些想法:

  • 单个资源(即GET / files / {fileId}),它返回包含文件和带有元数据的JSON / XML结构的多部分响应。我觉得这不是一个很好的方法。例如,您不能为客户端使用Accept标头来确定它们是否需要XML或JSON元数据表示,因为在两种情况下响应类型都是多部分的。

  • 两种资源(即GET / files / {fileId}和GET / files / {fileId} / metadata),其中第一个返回文件本身,第二个返回带有元数据的JSON / XML结构。从元数据到文件可以有一个链接。但是,如何与文件一起发送指向元数据的链接?

Eri*_*ein 6

我建议您使用第二个想法。这是大多数主要网络驱动器(Box,Dropbox,Google Drive等)使用的策略。它们通常具有明显不同的URL,因为它们将内容和元数据存储在不同的位置。

您可以将Link标头添加到文件响应中,并带有指向元数据的链接。链接头在RFC 5988中进行了描述。当前注册的链接关系集在此处。看来,这种describedBy关系在这里很合适。