Spring Cloud微服务使用Feign进行服务间调用报错Method has too many Body parameters

时间:2021-6-12 作者:qvyue

基于Spring Cloud的微服务,在使用Feign接口的时候,对于接口方法多参数的场景需要特殊处理。否则,可能就会报错:

Caused by: java.lang.IllegalStateException: Method has too many body parameters

1.Get请求的Feign接口方法多参数处理

错误的方式:

@GetMapping("/ingredient/findIngredientByNameAndType")
Ingredient getIngredientByNameAndType(String name, String type);

正确的方式:

@GetMapping("/ingredient/findIngredientByNameAndType")
Ingredient getIngredientByNameAndType(@RequestParam("name")  String name, @RequestParam("type")  String type);

对于Get请求方法,大于等于两个参数的方法需要使用 @RequestParam 注解修饰。

2.Post请求的Feign接口方法多参数处理

错误的方式:

@PostMapping
public Taco saveTaco(@RequestBody Taco taco, @RequestBody Ingredient ingredient)

Feign接口方法中可以有多个@RequestParam 注解,但是@RequestBody注解只能有一个。

正确的方式:

@PostMapping(consumes = "application/json")
public Taco saveTaco(@RequestBody Taco taco, Long ingredientId, String ingredientName)
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。