feign报404错误原因
Caused by: feign.FeignException$NotFound: status 404 reading OrderClient#isBuyCourse(String,String)
1、路径错误
在服务消费者采用GetMapping方式,如
@GetMapping("/eduorder/order/isBuyCourse/{courseId}/{memberId}")
public boolean isBuyCourse(@PathVariable(value = "courseId") String courseId,@PathVariable(value = "memberId") String memberId);
在服务提供者端,用
@RestController
@RequestMapping("/eduorder/order")
@CrossOrigin
public class TOrderController {
@GetMapping("isBuyCourse/{courseId}/{memberId}")
public boolean isBuyCourse(@PathVariable String courseId,@PathVariable String memberId){
}
}
服务消费者端,一定要加上/order
2、
在多个客户端上启动了服务提供者服务,而这两边的服务方法没同步,所以在调用feign时,会采用负载均衡,在多个客户端上一边读取一次。如果这个时候恰好读的是没有指定方法的客户端提供的服务,就会报404错误。
建议改好方法之后提交,两边再跑服务
3、
路径上参数为null
例如courseId为null,匹配不到路径地址,触发不了路径问题
4、
我的问题就是在服务消费者文件夹下面添加一个实现类
在实现类里面实现服务消费者类的方法,然后在服务消费者中添加一个
fallback=OrderFeignClient.class
这样就解决啦