我有一个关于服务不同资源表示的最佳实践的问题。我的用例比简单地以不同的内容类型(比如 xml 或 json)提供对象的表示要复杂一些。
背景:此 API 用于内容管理系统。API 的一个关键方面是用户可以请求文档的 zip 文件,以及它的所有依赖项(链接的图像和其他文档)。
例如,一个人可能会访问一个文档,/rest/all-documents/{doc-id}
该文档将返回该文档的 XML 表示。
在为他们设计一种获取文档压缩包及其所有依赖项的方法时,我提出了一些选择:
- 使用内容协商并将
Accept
标头设置为特定于供应商的内容,即:vnd.company.compiled-doc+zip - 使用子集合,例如
/rest/all-documents/{doc-id}/export
(Export 是动词,所以我不确定这是否标准化) - 在只读的不同 URI 上提供服务:
/rest/compiled-documents/{doc-id}
由于这个问题可能会一次又一次地出现,我很难确定设计这部分 API 的最佳方法是什么。到目前为止,我倾向于选项 3,
谢谢,
凯西