我的控制器如下所示:
@RequestMapping(value = "/videos/{id}",
headers = "Accept=image/jpeg, image/jpg, image/png, video/mp4",
method = RequestMethod.GET)
public ResponseEntity<byte[]> loadVideo(@PathVariable("id") long campaignId,
Principal principal) throws IOException {
此控制器返回与给定id关联的媒体的字节流。它工作正常。我唯一的问题是加载这个视频相关的元数据(标题,描述,视图计数等...),因为我发回一个字节数组,所以我不太确定在哪里放置元数据
我应该将元数据放在响应标题中吗?
我应该有两个单独的呼叫,一个用于视频(字节流)和 另一个调用返回一个包含元数据的对象?
答案 0 :(得分:1)
由于我的评论已经很长,我决定再次在此重新发布:
如果您处理某些媒体类型(如image/jpg
或video/mp4
),则应将元数据包含为标题,因为响应的有效内容应仅包含相应文件的字节。这样也可以查找元数据,而无需通过简单的HEAD
请求下载实际文件的字节。
某些API提供,howerver,定义自己的媒体类型或向客户端发送基于JSON或XML的响应。在这种情况下,有效负载通常包含预定义的结构,该结构包括作为base64编码的字符串的文件的字节以及作为纯文本的元数据。这些API参数一次发送多个文件比这样处理多部分内容更容易。