请问 spring boot 如何在 response 中同时返回一个 object 和 binary data

2019-09-16 14:55:33 +08:00
 Youfei
菜鸟遇到了些困难,最近要要完成一个需求要求在一次响应中返回 object 和 binary data.
目前想到 binary data 用 base64 存在 json 中,client 端是 python,拿到数据再解析
不知道还有没有别的更好的方法,谢谢大家
7100 次点击
所在节点    Java
38 条回复
guxingke
2019-09-16 15:09:00 +08:00
可以说没有 这种情况下 必须客户端配合解析
oaix
2019-09-16 15:09:08 +08:00
multipart
Youfei
2019-09-16 15:17:39 +08:00
@oaix 你提到的是 multipartbody 吗,这是是个封装后的类好像需要 java 重新反射生成相应的类才能获取各个文件。https://github.com/juazugas/spring-boot-multipart
arrow8899
2019-09-16 15:19:22 +08:00
return {"data": object, "binary": []},binary data 序列化后其实就是一个数组;
Youfei
2019-09-16 15:20:07 +08:00
@guxingke 没有现成的方法,只能简单粗暴一点吗?
3789
2019-09-16 15:22:03 +08:00
@Youfei 你自己用的方法🈶什么问题吗?
Youfei
2019-09-16 15:26:36 +08:00
@3789 还没写,想着会有更优雅的实现方式或者有现成的工具~
xfriday
2019-09-16 15:45:27 +08:00
用 protobuf 可以传 byte[]; json/xml 等都是文本序列化
lc1450
2019-09-16 15:56:50 +08:00
第一行输出 json 字符串,然后换行输出二进制数据
接收时 readline 第一行 json,后面当二进制处理就 ok 了,

跟下载文件没什么区别
xuanbg
2019-09-16 16:21:18 +08:00
二进制数据为什么不通过另一个接口获取呢?
Youfei
2019-09-16 19:56:01 +08:00
@xuanbg 就是这么个需求...
Youfei
2019-09-16 19:57:00 +08:00
@xfriday 如果说,一部分是文本,而另一部分是二进制流式传输呢?
Youfei
2019-09-16 19:57:50 +08:00
@lc1450 如果说,一部分是 json,而另一部分是二进制流式传输呢?
LeeSeoung
2019-09-16 20:14:26 +08:00
multipart/form-data 问题是 python 端的接收能自动解析出表单数据么。
springz
2019-09-16 20:30:57 +08:00
一个字段放字节流,前端应该很容易转 binary,放 Hex 应该也可以
springz
2019-09-16 20:33:18 +08:00
最好还是另一个接口获取
xfriday
2019-09-16 21:01:33 +08:00
@Youfei
message A {
bytes b = 1;
string c = 2;
int32 d = 3;
...
}
hantsy
2019-09-17 00:04:32 +08:00
分开,文本用 Json,Bin 用 Stream
Youfei
2019-09-17 10:03:08 +08:00
@hantsy 我就是在想如何在 body 中同时传输 json,bin stream,请问有实现方式吗?
armyHcz
2019-09-17 10:11:37 +08:00
你这个头像让我眼前一亮,又看到你问的问题,发现根本不是本人.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/601176

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX