Feign远程接口调用

clouds234@163.com

2018-8-6

 

以下都是使用在springboot2.0.4内置启动插件基础上

 

Feign-only 不注册到eureka

单独使用feign远程调用接口,不讲feign注册到注册中时的使用方法;只需要在feignclient注解添加url;如下:

 

import org.springframework.cloud.openfeign.FeignClient;

import org.springframework.web.bind.annotation.RequestMapping;

 

@FeignClient(name="url-feign",url="http://localhost:8099",fallback=UrlFeignFallback.class)

public interface UrlFeignClient {

 

@RequestMapping("/test/getuser")

public String getUser();

}

 

@Component

class UrlFeignFallback implements UrlFeignClient{

 

@Override

public String getUser() {

return "error urlfeign!!!";

}

}

 

这个是service层;不需要单独添加@service注解也可以使用@autowired注入;另外注意这里的fallback需要在配置文件启用;

在yml文件添加:

feign:

hystrix:

enabled: true

 

feign 注册到eureka

如果feign是注册到eureka的;那么可以简化注解,并且可以实现负载均衡等功能;如下:

 

@FeignClient(value="server1",fallback=SchedualServiceHiHystric.class)

public interface SchedualServiceHi {

 

@RequestMapping(value="/hi",method=RequestMethod.GET)

String sayHiFromClientOne(@RequestParam(value="name")String name);

}

 

/**

* 当消费者请求超时时返回本类信息;

* 本类需实现消费接口;每个方法重写一个超时信息;

* @author clouds234@163.com

* @date 2018年7月5日

*/

@Component

class SchedualServiceHiHystric implements SchedualServiceHi {

@Override

public String sayHiFromClientOne(String name) {

return "sorry "+name+",the server is not answer!!!";

}

}

 

这里的value="server1"是注册到eureka中心的服务名称;

 

spring cloud Feign添加headers

 

使用spring cloud 做saas服务器时,经常会通过Feign调用远程服务。有时候我们的远程服务可能做了某些权限验证。需要验证header或者token什么的。如果某没有token,可能会被阻止调用。那如何添加token呢。如果每个方法都手动设置headers,那未免太麻烦。可以通过一个切面,自动帮我们添加请求header。

 

直接上代码:

 

@Configuration

public class FeignConfig implements RequestInterceptor

{

//这里是我自己的redis代理,用不上可以去掉

@Autowired

private IRedisProxy redisProxy;

@Override

public void apply(RequestTemplate requestTemplate)

{

// 生成远程调用认证token

//String token = TokenUtil.TokenCreate("feign");

// 放到redis,设置时长为10S,一般10S后还没有完成请求则token失效

//redisProxy.setex(token, 10, token);

//设置token,关键方法

requestTemplate.header("Token", token);

}

}

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐