今天在用Swagger测试项目中文件服务的文件上传接口时发现接口调用异常。
异常展示
笔者这里罗列下Swagger上的错误显示、文件服务的异常以及服务调用方的异常。
【Swagger的异常】
【服务调用方的控制台异常】
【文件服务的控制台异常】
代码展示
【服务调用方的Controller层】
@ApiOperation("版本管理上传文件")
@PostMapping("/versionFile")
public ReturnMsg upload(@RequestParam("version") String version, @RequestParam("file") MultipartFile file) {
return alicloudClient.uploadVersionFile(version, file);
}
【服务调用方的Feign客户端】
/**
* 版本管理文件上传
* @author dong
* @date 2022/11/8 9:47
* @param version 版本
* @param file 文件
* @return com.myhexin.common.domain.base.ReturnMsg
*/
@PostMapping(value = "/files/uploadVersionFile")
ReturnMsg uploadVersionFile(@RequestParam("version") String version, @RequestParam(name = "file") MultipartFile file);
解决方案
使用OpenFeign调用时,需修改服务调用方的接口入参。
1. 文件参数
@RequestParam
要修改为@RequestPart
2. 设置content-type为multipart/form-data, 设置方式为
consumes = MediaType.MULTIPART_FORM_DATA_VALUE
服务调用方的Feign客户端代码如下:
/**
* 版本管理文件上传
* @author dong
* @date 2022/11/8 9:47
* @param version 版本
* @param file 文件
* @return com.myhexin.common.domain.base.ReturnMsg
*/
@PostMapping(value = "/files/uploadVersionFile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
ReturnMsg uploadVersionFile(@RequestParam("version") String version, @RequestPart(name = "file") MultipartFile file);
修改后Swagger测试成功,如下: