RestTemplate方式调用存在的问题
先来看我们以前利用RestTemplate发起远程调用的代码:
String url = "http://userservice/user" + order.getUserId();
User user = restTemplate.getForObject(url, User.class);
存在下面的问题:
代码可读性差,编程体验不统一
参数复杂URL难以维护
Feign的介绍
Feign是一个声名式的http客户端,官网地址:https://github.com/OpenFeign/feign
其作用就是帮助我们优雅的实现http请求的发送,解决上面提到的问题。
使用Feign的步骤如下:
1、引入依赖:
2、在order-service的启动类添加注解开启Feign的功能:
3、编写Feign客户端:
主要是基于SpringMVC的注解来声明远程调用的信息,比如:
服务名称:userservice
请求方式:GET
请求路径:/user/{id}
请求参数:Long id
返回值类型:User
代码效果:
总结
Feign的使用步骤:
①、引入依赖
②、添加@EnableFeignClients注解
③、编写FeignClient接口
④、使用FeignClient中定义的方法代替RestTemplate