java - 如何检索与从 RESTful Web 服务发送的视频或图像关联的元数据?

标签 java spring rest http video

我的 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/jpgvideo/mp4,您应该将元数据作为 header 包含在内,因为响应的有效负载应仅包含相应文件的字节。这还可以查找元数据,而无需通过简单的 HEAD 请求下载实际文件的字节。

但是,某些 API 提供定义自己的媒体类型或向客户端发送基于 JSON 或 XML 的响应。在这种情况下,有效负载通常包含预定义的结构,其中包括作为 base64 编码字符串的文件字节以及作为纯文本的元数据。这些 API 认为,通过这种方式一次发送多个文件比处理多部分内容更容易。

关于java - 如何检索与从 RESTful Web 服务发送的视频或图像关联的元数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39301383/

相关文章:

java - Java 中泛型的魔力

java - 在 spring 配置中设置 xml 数据以进行 Junit 测试

java - 服务器到客户端的通信方式

java - 在 Keycloak 中进行身份验证之前在服务器中设置请求 header

java - 如何在正则表达式中使用\n?

java - 如何使所有包对 Hibernate 可见?

json - Spring 启动( jackson ): How to avoid class name being serialized to JSON

Angular 10 - 检测图像是否仅存在于客户端,否则为默认图像

java - 如何使用 phantomjs 设置 clj-webdriver 0.7.2

java - 如何在不使用cookie的情况下在spring Controller 中获取客户端时区偏移量?