我的 Controller 如下所示:
@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 {
该 Controller 返回与给定 ID 关联的媒体字节流。效果很好。我遇到的唯一问题是加载与视频相关的元数据(标题、描述、观看次数等),因为我正在发送回字节数组,所以我不太确定将元数据放在哪里.
我应该将元数据放在响应 header 中吗?
我是否应该进行两次单独的通话,一次是视频(字节流),另一次是视频(字节流) 另一个调用返回包含元数据的对象?
- 或者有没有比这两种方法更好的方法来解决这个问题 上面的选项?
最佳答案
由于我的评论已经很长,我决定再次在这里重新发布:
如果您处理某些媒体类型,例如 image/jpg
或 video/mp4
,您应该将元数据作为 header 包含在内,因为响应的有效负载应仅包含相应文件的字节。这还可以查找元数据,而无需通过简单的 HEAD
请求下载实际文件的字节。
但是,某些 API 提供定义自己的媒体类型或向客户端发送基于 JSON 或 XML 的响应。在这种情况下,有效负载通常包含预定义的结构,其中包括作为 base64 编码字符串的文件字节以及作为纯文本的元数据。这些 API 认为,通过这种方式一次发送多个文件比处理多部分内容更容易。
关于java - 如何检索与从 RESTful Web 服务发送的视频或图像关联的元数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39301383/