Feign_Spring_cloud_4
前言
当我们使用的RestTemplate实现REST API调用,代码大致如下:
@GetMapping("/buy/{id}")
@RequestMapping(value = "/buyRibbon/{id}",method = RequestMethod.GET)
public Product findByIdRibbon(@PathVariable Long id){
Product product = restTemplate.getForObject("http://service-product/product/1",Product.class);
return product;
}
由代码可知,我们是使用拼接字符串的方式构造URL的,该URL只有一个参数。但是,在现实中,URL中往往含有多个参数。这时候我们如果还用这种方式构造URL,那么就会非常痛苦。那应该如何解决?让我们带着这样的疑问进行学习。
一.Feign简介
Feign是Netflix开发的声明式,模板化的HTTP客户端,其灵感来自Retrofit,JAXRS-2.0以及WebSocket.
- Feign可帮助我们更加便捷,优雅的调用HTTP API。
- 在SpringCloud中,使用Feign非常简单——创建一个接口,并在接口上添加一些注解,代码就完成了。
- Feign支持多种注解,例如Feign自带的注解或者JAX-RS注解等。
- SpringCloud对Feign进行了增强,使Feign支持了SpringMVC注解,并整合了Ribbon和Eureka,从而让Feign的使用更加方便。
二. 基于Feign的服务调用入门
1.引入依赖:
在服务消费者端引入以下依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>