Spring Cloud Feign客户端通过网关访问其他服务的方法

文章转载自:https://www.jianshu.com/p/c3c167e97bbd

常规的feign客户端接口定义

一般情况下,我们使用feign客户端调用其他服务时是这样定义的:

@FeignClient(name="xxx",fallback=xxx.class)
public interface Hello(){
}

这种方式的请求不会经过网关,有人会说,你直接把name属性设置成网关的服务名不就行了吗。。当有多个这样的接口时,如果都把name设置成网关,spring会报bean不唯一的错误。因此,那种解决方案是不可行的,那么我们希望服务间调用也能够进入网关处理逻辑,比如验证,token验证或者需要经过网关过滤器处理,该如何实现呢?答案是contextId

实现客户的请求通过网关访问其他服务

@FeignClient(contextId = "[唯一的名称]",name="网关服务名",fallback =xxx .class)
public interface Hello {
    @GetMapping("[其他服务名]/[具体的url]")
    String Hello(){
    }
}

使用上边的代码即可实现feign客户端请求通过网关访问其他服务。

你可能感兴趣的:(Spring,Cloud,spring,cloud,java,微服务,后端)