feign.FeignException$NotFound: status 404 reading问题解决「建议收藏」

feign.FeignException$NotFound: status 404 reading问题解决「建议收藏」这篇文章只是笔者做的一个BUG解决记录,每个人遇到的问题来源可能不同,参考价值不大。 Feign自然是要使用在客户端,来调用 CLOUD-PAYMENT-SERVICE服务,pom和yml文件配置没有问题,这一点是可以明确的。 启动文件上也没有问题,写明了@EnableFeig…

大家好,欢迎来到IT知识分享网。

前言

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

问题描述

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

feign.FeignException$NotFound: status 404 reading问题解决「建议收藏」

项目分析

feign.FeignException$NotFound: status 404 reading问题解决「建议收藏」

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

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

feign.FeignException$NotFound: status 404 reading问题解决「建议收藏」

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

feign.FeignException$NotFound: status 404 reading问题解决「建议收藏」

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

feign.FeignException$NotFound: status 404 reading问题解决「建议收藏」

翻看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);   

    ...

IT知识分享网

问题解决

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

feign.FeignException$NotFound: status 404 reading问题解决「建议收藏」

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

feign.FeignException$NotFound: status 404 reading问题解决「建议收藏」

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/13295.html

(0)
上一篇 2023-03-15 13:00
下一篇 2023-03-15 15:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信