SpringBoot如何使用Feign实现远程接口调用

简介: SpringBoot如何使用Feign实现远程接口调用

 概述

       什么是Feign?与 Ribbon ⼀样,Feign 也是由 Netflflix 提供的,Feign 是⼀个声明式、模版化的 Web Service 客户端,它简化了开发者编写 Web 服务客户端的操作,开发者可以通过简单的接⼝和注解来调⽤ HTTP API, Spring Cloud Feign,它整合了 Ribbon 和 Hystrix,具有可插拔、基于注解、负载均衡、服务熔断等⼀系列便捷功能。

特点

(1)Feign 是⼀个声明式的 Web Service 客户端;

(2)⽀持 Feign 注解、Spring MVC 注解、JAX-RS 注解;

(3)Feign 基于 Ribbon 实现,使⽤起来更加简单;

(4)Feign 集成了 Hystrix,具备服务熔断降级的功能。

示例

1.首先创建服务端项目,提供数据接口。

image.gif编辑

pom.xml

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.3</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.20</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

image.gif

application.yaml

server:
  port: 8081
  servlet:
    context-path: /api/server
spring:
  application:
    name: userService

image.gif

User

@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
}

image.gif

UserController

@RestController
public class UserController {
    @GetMapping("/getUserInfo")
    public User getUserInfo(){
        User user = new User();
        user.setId(1L);
        user.setName("BanQ");
        user.setAge(21);
        return user;
    }
}

image.gif

启动类

@SpringBootApplication
public class ServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServerApplication.class,args);
    }
}

image.gif

浏览器访问http://localhost:8081/api/server/getUserInfo

image.gif编辑

2.创建客户端项目,调用服务端接口。

image.gif编辑

pom.xml

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.12.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.20</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
        <version>2.0.2.RELEASE</version>
    </dependency>
</dependencies>

image.gif

application.yaml

server:
  port: 8082
  servlet:
    context-path: /api/client

image.gif

UserFeignClient

@FeignClient(
        name = "userService",
        url = "http://localhost:8081/api/server"
)
public interface UserFeignClient {
    @RequestMapping(value = "/getUserInfo",method = RequestMethod.GET)
    @ResponseBody
    String getUserInfo();
}

image.gif

TestController

@RestController
public class TestController {
    @Autowired
    private UserFeignClient userFeignClient;
    @GetMapping("/get")
    public String get(){
        return userFeignClient.getUserInfo();
    }
}

image.gif

启动类

@EnableFeignClients
@SpringBootApplication
public class ClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(ClientApplication.class,args);
    }
}

image.gif

浏览器访问:http://localhost:8082/api/client/get

image.gif编辑

这样就实现了通过feign client来调用远程(第三方)接口了。

实例代码:SpringBoot使用Feign调用第三方接口Demo

目录
相关文章
|
7月前
|
机器学习/深度学习 负载均衡 Java
【SpringBoot系列】微服务远程调用Open Feign深度学习
【4月更文挑战第9天】微服务远程调度open Feign 框架学习
340 2
|
6月前
|
Java 应用服务中间件 微服务
spring boot 中Feign调用提示Request header is too large 解决方案
spring boot 中Feign调用提示Request header is too large 解决方案
258 1
|
6月前
|
Java API Spring
Spring Boot中使用Feign进行HTTP请求
Spring Boot中使用Feign进行HTTP请求
|
7月前
|
Java API 时序数据库
InfluxData【付诸实践 02】SpringBoot 集成时序数据库 InfluxDB 应用分享(InfluxDB实例+Feign接口调用InfluxDB API)源码分享
InfluxData【付诸实践 02】SpringBoot 集成时序数据库 InfluxDB 应用分享(InfluxDB实例+Feign接口调用InfluxDB API)源码分享
172 0
|
druid 前端开发 Java
【Spring Boot】使用Feign作为HTTP客户端调用远程HTTP服务
【Spring Boot】使用Feign作为HTTP客户端调用远程HTTP服务
354 0
springBoot feign请求日志切面
springBoot feign请求日志切面
|
缓存 负载均衡 监控
springboot不香吗?为什么还要使用springcloud--各个组件基本介绍(Feign,Hystrix,ZUUL)
springboot不香吗?为什么还要使用springcloud--各个组件基本介绍(Feign,Hystrix,ZUUL)
104 0
|
存储 负载均衡 前端开发
SpringBoot 使用 Feign 无废话 All-in-one 指南
SpringBoot 使用 Feign 无废话 All-in-one 指南
1817 0