SpringBoot接口同时接收JSON数据和文件时遇到的问题

最近公司有一个需求,需要通过一个接口上传处理好的数据,由于数据太复杂,所以就采用了JSON格式提交数据,接口通过@RequestBody获取数据并且映射到对应的对象去,这块需要注意的一个问题就是前端在提交数据的时候需要将HTTP的Headers头里的Content-Type设置成application/json才行,本来写好测试完大功告成了,结果突然又改需求了。。要求在提交数据的时候同时上传一个文件,于是便查询了一下资料,发现@RequestBody对应的类型是application/json,而文件Multipart对应的类型是multipart/form-data,这两种格式不兼容,所以无论怎么写都是调用失败的。

原始代码如下:

SpringBoot接口同时接收JSON数据和文件时遇到的问题_第1张图片

经过调查发现有两种办法解决问题,首先都是将Content-type类型设置为multipart/form-data;

1、简化参数,将JSON参数抽取出来,参数传递过去后再重新拼接。

SpringBoot接口同时接收JSON数据和文件时遇到的问题_第2张图片

2、将@RequestBody修饰的实体参数当做一个JSON字符串传递,传递过去后通过GSON或者FastJSON转换。

SpringBoot接口同时接收JSON数据和文件时遇到的问题_第3张图片

image.png
因为第二种方法简单,所以采用了第二种方法。

你可能感兴趣的:(疑难杂症)