
第一种报错:405,method not allowed
问题描述
生产者有一个api,根据电影类型进行模糊查询,采用get方法,需要传一个参数name

把这个api用feign在别的模块进行调用时,报了如下错误,405异常
405,“error”:“Method Not Allowed”,“path”:“/api/genre/findByName”
feign.FeignException$MethodNotAllowed: [405] during [GET] to [http://movie-genre/api/genre/findByName] [IGenreFeign#findGenreByName(String)]: [{"timestamp":"2023-09-07T14:33:22.777+00:00","status":405,"error":"Method Not Allowed","path":"/api/genre/findByName"}]

报错解决
需要再feign里面加一下请求的参数的注解

查询成功

路径参数解决

第二种报错:Method has too many Body parameters
问题描述
在一个微服务中,通过feign调用了另一个微服务,需要传两个参数,引入feign之后,报错,报错显示方法参数太多
Caused by: java.lang.IllegalStateException: Method has too many Body parameters: public abstract boolean com.tianju.rabbit.feign.OrderFeign.add2(java.lang.String,java.lang.Integer)

报错解决
package com.tianju.rabbit.feign;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(name = "order-service")
public interface OrderFeign {
@PostMapping("/add")
boolean add(@RequestParam("commodityCode") String commodityCode,
@RequestParam("nums") Integer nums);
}

总结
在使用feign进行微服务之间远程调用的时候,需要加入相关的注解,@PathVariable:和路径变量传参进行绑定;@RequestParam:和传的参数进行绑定;@RequestBody:如果前端传的JSON对象。
本文讲述了在使用Feign进行微服务间API调用时遇到的405MethodNotAllowed错误的解决方案,以及如何通过@PathVariable和@RequestParam正确绑定路径参数和请求体参数。
——如果采用feign远程调用服务,则需要加请求参数相关注解 @PathVariable、@RequestParam、@RequestBody&spm=1001.2101.3001.5002&articleId=133963816&d=1&t=3&u=a57ab8befb214a76b3e06455b562543f)
185

被折叠的 条评论
为什么被折叠?



