专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

feign.FeignException$NotFound: status 404 reading问题解决

前言

这篇文章只是笔者做的一个BUG解决记录,每个人遇到的问题来源可能不同,参考价值不大。

问题描述

今天在学习feign服务调用时,配置完以后启动spring boot,结果报错,报错内容显示找不到getPaymentById这个方法 O(U_U)O,先来看看项目内容

54_1.png

项目分析

54_2.png

Feign自然是要使用在客户端,来调用 CLOUD-PAYMENT-SERVICE服务,pom和yml文件配置没有问题,这一点是可以明确的。

启动文件上也没有问题,写明了@EnableFeignClients注解用来激活Feign,@EnableEurekaClient用来激活Eureka服务注册和服务发现。

54_3.png

然后是Controller层,就是这里调用了getPaymentById方法,报错说找不到,怎么会找不到呢,不久是在Service层上吗?

54_4.png

service层,@FeignClient表明使用CLOUD-PAYMENT-SERVICE服务,具体就是8001,8002,8004端口的这几个服务,Feign功能等同于 Ribbon+RestTemplate,实现负载均衡和服务调用Feign直接用接口注解的方式指明要调用的服务和具体的方法

54_5.png

翻看cloud-provider-payment8001这个服务的Controller层代码,可以发现 getPaymentById这个方法的url是 /payment/get/{id} 而不是 /get/{id},所以在Feign调用会找不到这个方法 404 NOT FOUND

@RestController
@RequestMapping("/payment")
public class PaymentController {    
    ...  

    @GetMapping("/get/{id}")    
    public CommonResult<Payment> getPaymentById(@PathVariable("id") Long id) {        
        Payment payment = IPaymentService.getPaymentById(id);   

    ...

问题解决

这样子的话就只要在原先用到Feign的Service层改动一下

54_6.png

测试一下,成功返回数据 YEAH!

54_7.png

文章永久链接:https://tech.souyunku.com/29496

未经允许不得转载:搜云库技术团队 » feign.FeignException$NotFound: status 404 reading问题解决

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们