feign踩坑_Spring cloud踩坑记录之使用feignclient远程调用服务404的方法

本文记录了在Spring Cloud项目中使用FeignClient进行服务间调用时遇到的404错误问题。当Feign尝试调用注册在Eureka上的服务接口时,出现404错误。问题根源可能在于服务路径配置不一致或请求路径不正确。解决方案包括检查服务提供方和消费方的路径配置,确保请求路径与实际接口路径匹配,以及注意context-path的影响。
摘要由CSDN通过智能技术生成

Spring cloud踩坑记录之使用feignclient远程调用服务404的方法

发布时间:2019-10-15 09:22

来源:互联网

当前栏目:web技术类

前言

公司项目进行微服务改造,由之前的dubbo改用SpringCloud,微服务之间通过FeignClient进行调用,今天在测试的时候,eureka注册中心有相应的服务,但feignclient就是无法调通,一直报404错误,排查过程如下:

一、问题:

服务提供方定义的接口如下:

/**

* 黑白名单查询接口

*

* @author LiJunJun

* @since 2018/10/18

*/

@Component(value = "blackAndWhiteListFeignClient")

@FeignClient(value = "pear-cache-service", path = "v1/cache/limitlist")

public interface IBlackAndWhiteListFeignClient {

/**

* 获取黑白名单手机号分组编号

*

* @param trace 请求流水

* @param phoneNum 电话号码

* @return 电话号码所在分组

*/

@RequestMapping(value = "/blackAndWhiteList", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)

ResultData blackAndWhiteList(@RequestHeader(name = "Trace") String trace, @RequestParam("phoneNum") String phoneNum);

}

接口实现类如下:

/**

* 黑白名单controller

*

* @author LiJunJun

* @since 2018/10/18

*/

@ProtectedLdApi

@RestController

@RequestMapping(value = "v1/cache/limitlist")

@Api(value = "黑白名单缓存", description = "黑白名单缓存相关接口")

public class BlacklAndWhiteListController extends AbstractController implements IBlackAndWhiteListFeignClient {

/**

* 日志记录器

*/

private final static Log LOGGER = new Log(BlacklAndWhiteListController.class);

/**

* 注入tedis

*/

@Autowired

private JedisSentinelPoolExt jedisSentinelPool;

/**

* 获取黑白名单手机号分组编号

*

* @param trace 请求流水

* @param phoneNum 电话号码

* @return 电话号码所在分组

*/

@Override

@ApiOperation(value = "获取黑白名单手机号分组编号", notes = "根据电话号码从缓存中获取黑白名单分组")

@RequestMapping(value = "/blackAndWhiteList", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)

public ResultData blackAndWhiteList(@RequestHeader(name = "Trace") String trace, @RequestParam("phoneNum") String phoneNum) {

do something...

}

}

调用方如下:

public class MessageListController {

private static final Log LOGGER = new Log(MessageListController.class);

@Autowired

private IBlackAndWhiteListFeignClient blackAndWhiteListFeignClient;

@RequestMapping(value = "/testBlackAndWhiteList", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)

public ResultData testBlackAndWhiteList() {

LOGGER.info("开始调用缓存接口");

ResultData res = blackAndWhiteListFeignClient.blackAndWhiteList("asdqwezxxc", "B18037903086");

LOGGER.info("调用结果:" + res.getResultData());

return res;

}

调用结果:

华丽丽的404了,很头疼,经过各种度娘,发现导致这个问题有两个原因,以下是解决方法:

二、问题分析

经过百度,说将SpringBoot配置文件里面server.servlet.context-path

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值