环境
我的应用程序(战争)有一个 JavaScript 前端和一个 Java REST 服务。
要上传的文件将在前端生成,但不是直接由用户交互生成——这不是用户自己上传文件的用例。因此,有必要从 JavaScript 代码启动上传。
当我上传二进制数据时,我需要能够发送关于二进制数据的元数据(由应用程序的其他部分生成)——这就是为什么我需要某种协议而不是仅仅上传文件的原因。
问题
我无法确定上传文件的最佳做法是什么,主要是关于所使用的协议。
我遇到了以下协议:
- json
- xml
- proctol 缓冲区(通过protobuf.js)
然而,像往常一样,互联网上有很多不同的信息,这些信息并没有给我一个连贯的画面:
- 关于可靠性,互联网似乎说你最好使用
multipart/mixed
类型来传输数据,而不是纯application/octet-stream
类型。 - json 本身并不支持二进制数据,显然,Base64 具有很高的处理开销。
- 它是一个 JavaScript 前端,因此首选 json。
- 当然,我可以使用 protobuf.js,但我更愿意使用前沿技术而不是前沿技术。
我的优先事项是:
- 1 到 10 兆字节的文件的可靠数据传输。
- 高性能和高效的数据传输。
- 可读代码/架构
简而言之,鉴于我在后端使用 Java REST 服务,上述 3 种格式中的哪一种最适合这些要求?
(如果我使用 Java REST 服务(而不是 servlet)来上传文件这一事实将是最大的减速,这也是一个很好的答案!)
编辑:添加评论要求的信息 - 谢谢!