方案一:使用 @SpringQueryMap 注解
注解为 spring-cloud-openfeign-core jar包下 org.springframework.cloud.openfeign
@SpringQueryMap 注解在一个方法上只能有一个,多个的话只有一个对象可以获取到值,其它对象为空
consumes = MediaType.MULTIPART_FORM_DATA_VALUE 指定以表单(multipart/form-data)形式提交,一般上传文件需要指定
// 客户端
/**
* post 上传文件 同时发送对象
*/
@PostMapping(value = "upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
Result<?> upload(@RequestPart MultipartFile file, @RequestParam String fileUrl, @SpringQueryMap User user);
/**
* get 发送对象
*/
@GetMapping("test")
Result<?> upload(@RequestParam Long id, @SpringQueryMap User user);
/**
* post 发送多参数
*/
@PostMapping("getBaseWorkMsg")
Result<?> manyParam(@RequestParam Long id, @RequestBody TestModel testModel, @SpringQueryMap User user);
// 服务端
/**
* post 上传文件 同时发送对象
*/
@PostMapping(value = "upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public Result<?> upload(@RequestPart MultipartFile file, @RequestParam String fileUrl, @SpringQueryMap User user) {
Result result = new Result()
return result;
}
/**
* get 发送对象
*/
@GetMapping("test")
public Result<?> test(@RequestParam Long id, @SpringQueryMap User user) {
Result result = new Result()
return result;
}
/**
* post 发送多参数
*/
@PostMapping("getBaseWorkMsg")
public Result<?> manyParam(@RequestParam Long id, @RequestBody TestModel testModel, @SpringQueryMap User user) {
Result result = new Result()
return result;
}
方案二:自定义config
package com.test.config;
import org.springframework.cloud.openfeign.support.AbstractFormWriter;
import org.springframework.cloud.openfeign.support.JsonFormWriter;
import org.springframework.context.annotation.Bean;
/**
* FeignConfig
*/
@Configuration
public class FeignConfig {
@Bean
public AbstractFormWriter jsonFormWriter() {
return new JsonFormWriter();
}
}
// 客户端
/**
* post 上传文件 同时发送对象
*/
@PostMapping(value = "upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
Result<?> upload(@RequestPart MultipartFile file, @RequestParam String fileUrl, @RequestPart User user);
/**
* post 发送多参数
*/
@PostMapping(value = "getBaseWorkMsg", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
Result<?> manyParam(@RequestParam Long id, @RequestPart TestModel testModel, @RequestPart User user);
// 服务端
/**
* post 上传文件 同时发送对象
*/
@PostMapping(value = "upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public Result<?> upload(@RequestPart MultipartFile file, @RequestParam String fileUrl, @RequestPart User user) {
Result result = new Result()
return result;
}
/**
* post 发送多参数
*/
@PostMapping(value = "getBaseWorkMsg", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public Result<?> manyParam(@RequestParam Long id, @RequestPart TestModel testModel, @RequestPart User user){
Result result = new Result()
return result;
}