SpringCloud踩坑笔记——Feign调用没有参数并且404

在SpringCloud项目中,使用Feign调用服务时遇到404错误,问题在于请求参数未传递和Host设置不正确。通过在接口方法上添加@RequestParam注解解决参数传递问题,并配置eureka.instance.prefer-ip-address为true和eureka.instance.instance-id来修正Host,从而成功解决调用问题。
摘要由CSDN通过智能技术生成

场景重现
我在demo项目中加入了zuul网关,写了俩服务,客户端向content服务发起get请求,经过zuul网关判断请求是否携带必要参数,然后再进入content服务,使用参数访问user服务。但是我写完这些之后,发现只要是请求就直接进到fallback方法里,提示远程方法超时,这就奇怪了,我远程服务好好的,都能请求的通的,那是什么原因呢。
跟踪Feign的执行接口Client.class的execute方法,发现我的url有俩问题
1.没有携带username参数
2.host不对,写的是服务名,也没有端口号

问题1:
请求只有url,没有参数,也就是说参数没有向下游传递。
解决方法:在content服务的接口方法的参数上添加@RequestParam注解,将请求参数与方法参数对应。同时保证远程调用接口的方法参数上也有该注解。
content接口

@RequestMapping("/listByUsername")
    public String listByUsername(@RequestParam("name") String name){
        List<Blog> list = myService.listMyBlogs(name);
        return JSON.toJSONString(list);
    }

UserRemote接口

@Service
@FeignClient(name = "user")
public interface UserRemote {
    @RequestMapping("/findByUs
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值