MultipartFile文件与传递body并存问题

文章目录

关于MultipartFile文件与传递JsonBody并存问题

基于spring框架,如果是上传文件,接口采用MultipartFile接收数据流,如果是body,接口采用@RequestBody,这些都比较熟悉的。但是如果遇到既要又要的场景,能不能同时传递?

首先想到的方法就是尝试,写一个具有两个特点入参的测试接口,然后测试。结果发现在postman编辑的时候已经不支持了,MultipartFile和jsonBody同属于body,二者互斥,只能选择其其一,所以MultipartFile文件与传递JsonBody并存问题就不是问题,压根就不能共存。

解决数据流与参数同时传递的问题

方法一:采用restful风格

estful属于参数在url上占位的优雅方式,但是这个方式不适合大数据,否则这个url将会变得很长,很难读懂。

方法二:将json数据封装到Query

RequestParam方式属于在url后面拼接参数,所以也是有一定的上限,所以拼接数据大小尽量不能大于4kb,建议也是少量参数使用。

方法三:formdata多参数传递

在postman上也是能发现formdata是支持多数据流的,支持file格式和text格式,但是需要注意这里不是直接传递json字符串,而是像Query那样拆解字段。不过对于后端的同学来说,写法上代码与query方式没有区别。

但是对于请求方来说,区别还是很明显的,看下面请求方式

bash 复制代码
curl --request POST \
  --url http://localhost:8090/test \
  --header 'content-type: multipart/form-data' \
  --form 'file=@C:\Users\000095133\Desktop\test.xlsx' \
  --form id=92142373412864 \
  --form userName=13800\
  --form company=1

从请求方式可以看出,三个参数是跟随formdata传递的,就不会像Query那样出现拼接url的情况,整体也变得优雅。

相关推荐
万邦科技Lafite7 分钟前
如何通过 item_search_img API 接口获取淘宝商品信息
java·前端·数据库
雨辰AI10 分钟前
面试题:人大金仓事务隔离级别、MVCC 机制详解(与MySQL差异对比)
数据库·后端·mysql·面试·政务
AKA__Zas12 分钟前
芝士算法(双指针篇 1.0)
java·算法·学习方法
辣椒HTTP13 分钟前
代理池健康检查与TLS指纹伪装实践
后端
玛卡巴卡ldf17 分钟前
【LeetCode 手撕算法】(栈)有效括号、最小栈、字符串解码、每日温度、柱状图最大矩形
java·数据结构·算法·leetcode·力扣
ClouGence18 分钟前
豆包收费之后,我找到了更好用的 AI 工具
前端·人工智能·后端·ai·ai编程·ai写作
aircrushin18 分钟前
音乐节结束前,拿手机📱搓了一个工具
前端·后端
小撒的私房菜31 分钟前
Day 3:多工具时代,Agent 自己选——加入计算器和时间工具
人工智能·后端
czlczl2002092531 分钟前
MySQL 基于 GTID 的 Binlog 主从同步机制
java·jvm·mysql
Sylvia33.41 分钟前
足球数据API接入实战:从认证到实时比分推送的完整指南
java·开发语言·前端·c++·python