Springboot FeignClient调用Method has too many Body parameters解决

  • Post category:http

问题描述:

在使用Springboot的FeignClient进行方法调用时,出现了“Method has too many Body parameters”的报错。

解决方案:

  1. 将参数封装成一个类

创建一个类,用来封装需要传递的参数,再将这个类作为FeignClient请求方法的参数即可。代码如下:

@Data
public class UserRequest {
    private String name;
    private Integer age;
}

使用的时候,将这个类实例化,设置参数值后,作为FeignClient请求方法的参数传入即可,示例如下:

@GetMapping("/user")
UserResponse getUser(@RequestBody UserRequest request);

此时,请求参数就被封装成一个具有属性的对象,并作为请求方法的参数提交给了FeignClient,避免了“Method has too many Body parameters”的报错。

  1. 使用Map传参

将需要传递的参数按照键值对的方式封装到Map中,再将Map作为FeignClient请求方法的参数即可。代码如下:

@GetMapping("/user")
UserResponse getUser(@RequestParam Map<String, Object> params);

使用的时候,将参数按照键值对的方式封装到Map中,示例如下:

Map<String, Object> params = new HashMap<>();
params.put("name", "张三");
params.put("age", "20");
feignService.getUser(params);

此时,请求参数也被成功传递给了FeignClient,避免了“Method has too many Body parameters”的报错。

总结:

对于“Method has too many Body parameters”的报错,可以通过将参数封装成一个类或者使用Map传参的方式来解决。在类的封装方式中,每个字段都代表了一个需要传递的参数;在使用Map传参的方式中,每个键值对表示了一个需要传递的参数。