哪种方法是选择资源下载带有RestApi的文件的最佳方法?

哪种方法是选择资源下载带有RestApi的文件的最佳方法?,rest,restful-architecture,restful-url,Rest,Restful Architecture,Restful Url,我需要下载一个文件,但是,我想知道哪种方法是发布我的资源的最佳方法。 假设我有一份文件 http://api/documents/id 在我发出GET请求的地方,我是否应该接收具有该id的文档信息,包括一个额外字段,该字段在BASE64中表示该文件的字符串?或者我应该发布另一个url资源,如 http://api/documents/id/download 只是为了得到文件?首先我知道怎么做,但我不知道这是否是正确的方法。对于后者,我需要建议。据我所知,您的文档资源包括元数据和文档的实际内容

我需要下载一个文件,但是,我想知道哪种方法是发布我的资源的最佳方法。 假设我有一份文件

http://api/documents/id
在我发出GET请求的地方,我是否应该接收具有该id的文档信息,包括一个额外字段,该字段在BASE64中表示该文件的字符串?或者我应该发布另一个url资源,如

http://api/documents/id/download

只是为了得到文件?首先我知道怎么做,但我不知道这是否是正确的方法。对于后者,我需要建议。

据我所知,您的
文档
资源包括元数据和文档的实际内容。因此,您可以支持以下内容:

  • GET/documents/:id
    :返回文档元数据的表示形式
  • GET/documents/:id/content
    :返回文档内容的表示形式

或者,您可以支持单个端点,例如
GET/documents/:id
,并在多部分响应中返回元数据和内容



不过,内容协商将是最好的方法。您可以使用一个端点,例如
GET/documents/:id
Accept:application/json
作为元数据,例如,
Accept:application/octet stream
作为内容。

据我所知,您的
文档
资源包括元数据和文档的实际内容。因此,您可以支持以下内容:

  • GET/documents/:id
    :返回文档元数据的表示形式
  • GET/documents/:id/content
    :返回文档内容的表示形式

或者,您可以支持单个端点,例如
GET/documents/:id
,并在多部分响应中返回元数据和内容


不过,内容协商将是最好的方法。对于元数据,您可以使用单个端点,例如
GET/documents/:id
Accept:application/json
,对于内容,可以使用
Accept:application/octet-stream

如何

GET/documents/:id
获取元数据
GET/documents/:id?action=下载内容
如何

GET/documents/:id
获取元数据

GET/documents/:id?action=download
for content

根据您发布的内容在标题上传递一个Accept,您是否收到了文件?例如,如果使用Accept:application/json发送get,则表示客户端将通过json获取资源。您可以在accept上为其添加特定类型吗?像Accept:application/file?我认为Accept头用于同一响应的不同表示,即JSON与XML。这似乎是区分内容和元数据的一种非常不寻常的方式。根据您发布的内容在头上传递一个Accept,然后根据您是否收到文件?例如,如果使用Accept:application/json发送get,则表示客户端将通过json获取资源。您可以在accept上为其添加特定类型吗?像Accept:application/file?我认为Accept头用于同一响应的不同表示,即JSON与XML。似乎是区分内容和元数据的一种非常不寻常的方式。