通常出现该问题是因为在使用Feign进行请求时,传递的参数类型并不是数组类型,而Feign默认将参数类型设置为数组类型。解决方式为将请求参数封装成数组类型,示例如下:
定义请求参数:
public class MyParam {
private String name;
private Integer age;
// getter 和 setter 方法省略...
}
定义Feign客户端,并将参数封装成数组类型:
public interface MyClient {
@RequestMapping(method = RequestMethod.POST, value = "/user")
void updateUser(MyParam[] params);
}
// 调用Feign客户端
MyParam param1 = new MyParam();
param1.setName("张三");
param1.setAge(18);
MyParam param2 = new MyParam();
param2.setName("李四");
param2.setAge(20);
MyClient myClient = Feign.builder()
.encoder(new JacksonEncoder())
.target(MyClient.class, "http://localhost:8080");
myClient.updateUser(new MyParam[]{param1, param2});