OpenFeign 的请求处理流程

news2024/9/20 6:04:08

流程

1. 定义 Feign 客户端接口

首先,开发者需要定义一个 Feign 客户端接口,并使用 @FeignClient 注解进行配置。例如:

@FeignClient(name = "aService", url = "http://localhost:8080")
public interface ServiceProviderClient {
    @GetMapping("/data")
    String getData();
}

2. 创建 Feign 客户端实例

当 Spring Boot 应用启动时,Spring Cloud 会扫描带有 @FeignClient 注解的接口,并使用 Feign.Builder 创建 Feign 客户端实例。

3. 解析注解并生成请求元数据

Contract 组件会解析接口中的注解(如 @GetMapping),并生成相应的 HTTP 请求元数据。

4. 编码请求体

如果请求包含请求体(如 POST 请求),Encoder 会将请求体编码为 HTTP 请求体。

5. 执行 HTTP 请求

Client 组件负责执行实际的 HTTP 请求,并将响应返回。

6. 解码响应体

Decoder 将 HTTP 响应体解码为 Java 对象,并返回给调用者。

示例

下面创建一个简单示例调用百度首页

依赖准备

  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <dependencies>
        <!-- Spring Boot Starter Web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- Spring Cloud OpenFeign -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2020.0.4</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

1.创建Feign 客户端接口

@FeignClient(name = "bService", url = "http://www.baidu.com")
public interface ServiceProviderClient2 {
    @GetMapping
    String getData();
}

 2.创建调用接口

@RestController
public class ConsumerController {

  
    @Resource
    private ServiceProviderClient2 serviceProviderClient2;
    
    @GetMapping("/consume2")
    public String consumeService2() {
        return serviceProviderClient2.getData();
    }
}

3.创建启动类

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

4.测试

总结

OpenFeign 通过声明式的注解简化了 Web 服务客户端的编写。其核心组件包括 @FeignClient 注解、Feign.BuilderContractEncoderDecoder 和 Client

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1858568.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库 复习题

有一个关系模式&#xff1a;工程关系&#xff08;工程号&#xff0c;工程名称&#xff0c;职工号&#xff0c;姓名&#xff0c;聘期&#xff0c;职务&#xff0c;小时工资率&#xff0c;工时&#xff09;&#xff0c;公司按照工时和小时工资率支付工资&#xff0c;小时工资率由…

【面试题】马上金九银十了,简历该准备起来了,面试题你准备好了吗 ?浅谈 JS 浅拷贝和深拷贝

代码展示 let obj_old {name: Tom,age: 15,favorite: {food: bread,drink: milk} } let obj_new {...obj_old} console.log(obj_old obj_new) // false console.log(obj_old.name obj_new.name) // true console.log(obj_old.favorite obj_new.favorite) // true3. Ar…

什么是档案业务建设评价

档案业务建设评价是对档案管理机构或部门在档案业务建设方面进行的评估和考核。评价主要根据一定的评价标准和指标&#xff0c;对档案业务的各个方面进行综合评估&#xff0c;包括档案收集、整理、保管、利用等环节&#xff0c;以及档案管理机构的组织管理、技术能力等方面。 评…

OnlyOffice:现代办公的最佳选择

目录 安装 使用 评价 对比&#xff08;与WPS&#xff09; 总结 在当今的数字化办公时代&#xff0c;选择一款功能全面且易于使用的办公软件至关重要。OnlyOffice作为一款现代化的办公软件&#xff0c;凭借其强大的功能和友好的用户体验&#xff0c;逐渐成为了众多企业和个…

【ONLYOFFICE震撼8.1】ONLYOFFICE8.1版本桌面编辑器测评

随着远程工作的普及和数字化办公的发展&#xff0c;越来越多的人开始寻找一款具有强大功能和便捷使用的办公软件。在这个时候&#xff0c;ONLYOFFICE 8.1应运而生&#xff0c;成为了许多用户的新选择。ONLYOFFICE 8.1是一种办公套件软件&#xff0c;它提供了文档处理、电子表格…

19、删除链表的倒数第

1、题目描述 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[]示例 …

数字图像处理实验报告小论文(Matlab语言)

1.课题分析 在当今信息化社会&#xff0c;图像处理技术已成为众多领域不可或缺的一部分&#xff0c;从医学影像分析到安防监控&#xff0c;再到日常生活中的图片美化&#xff0c;图像处理技术都发挥着至关重要的作用。本次课题主要聚焦于图像灰度处理、图像小波变换和图像分割这…

数字货币与区块链生态

前言&#xff1a;区块链技术与数字货币这一文详细介绍了区块链技术&#xff0c;感兴趣的可以先看看这篇文章 1.比特币之后的数字货币与区块链发展 2.区块链形态 • 无许可区块链&#xff08;permissionless blockchain&#xff09; 用户无需许可即可加入区块链网络 • 许…

【简单讲解下C++max函数的使用】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

PSL400PC10P80、PSL410PC10P100、PSL420PC10P60比例换向阀放大器

PSL100PC10P60、PSL110PC10P80、PSL120PC10P100、PSL200PC10P80、PSL210PC10P60、PSL220PC10P100、PSL400PC10P80、PSL410PC10P100、PSL420PC10P60、PSL500PC10P100、PSL510PC10P80、PSL520PC10P100、PSL600PC10P60、PSL610PC10P100、PSL620PC10P60、PSL700PC10P80、PSL710PC10…

【面试题】面试官:判断图是否有环?_数据结构复试问题 有向图是否有环

type: NODE;name: string;[x: string]: any; }; [x: string]: any;}; export type Data Node | Edge; 复制代码 * 测试数据如下const data: Data[] [ { id: ‘1’, data: { type: ‘NODE’, name: ‘节点1’ } }, { id: ‘2’, data: { type: ‘NODE’, name: ‘节点2’ } },…

位置轴轴控功能块封装(CODESYS ST源代码)

博途PLC轴控功能块封装请参考下面文章链接&#xff1a; 1、S7-1200PLC位置控制功能块优化 S7-1200PLC脉冲轴位置控制功能块优化(完整SCL源代码)_s71200 脉冲轴-CSDN博客文章浏览阅读251次。博途PLC 位置控制功能块常用应用&#xff0c;可以参考下面文章链接&#xff1a;1、博…

电脑打印文件怎么操作?

有打印机用户的打印操作 对于已经拥有打印机的用户来说&#xff0c;打印文件通常是一个简单的步骤。首先&#xff0c;你需要将你的文件&#xff08;如Word、PDF、PPT等&#xff09;在电脑上打开。然后&#xff0c;点击菜单栏中的“打印”选项&#xff0c;或者快捷键CtrlP&…

ubuntu22.04安装onlyoffice社区版

安装unbuntu22.04 https://blog.csdn.net/qq_36437991/article/details/135915360 安装onlyoffice sudo apt-get update sudo apt-get upgradepostgresql sudo apt-get install postgresql创建用户和数据库 sudo -i -u postgres psql -c "CREATE USER onlyoffice WIT…

浏览器自带的IndexDB的简单使用示例--小型学生管理系统

浏览器自带的IndexDB的简单使用示例--小型学生管理系统 文章说明代码效果展示 文章说明 本文主要为了简单学习IndexDB数据库的使用&#xff0c;写了一个简单的增删改查功能 代码 App.vue&#xff08;界面的源码&#xff09; <template><div style"padding: 30px&…

BC64 牛牛的快递(c++)

牛牛的快递 题目描述输入描述输出描述示例代码 解题思路例如 题目描述 牛牛正在寄快递&#xff0c;他了解到快递在 1kg 以内的按起步价 20 元计算&#xff0c;超出部分按每 kg 1元计算&#xff0c;不足 1kg 部分按 1kg计算。如果加急的话要额外付五元&#xff0c;请问牛牛总共要…

GNSS接收机的工作原理

GNSS接收机的工作原理如下&#xff1a; 信号接收&#xff1a;GNSS接收机通过天线接收来自卫星导航系统的信号&#xff0c;这些信号包含卫星的位置、时间和健康状态等信息。 信号处理&#xff1a;接收的信号首先经过前置放大器放大&#xff0c;然后经过滤波器滤除噪声。接收机会…

2024年现代化教育与新媒体发展国际会议(MENMDIC 2024)

2024年现代化教育与新媒体发展国际会议 2024 International Conference on Modern Education and New Media Development 会议简介 2024年现代化教育与新媒体发展国际会议为教育领域的研究者和实践者提供了一个宝贵的学习和交流平台。通过参与本次会议&#xff0c;与会者不仅可…

信息学奥赛初赛天天练-34-CSP-J2021完善程序-按位异或、模拟算法、数组模拟环、约瑟夫问题应用

PDF文档公众号回复关键字:20240624 2021 CSP-J 完善程序3 1 完善程序 (单选题 &#xff0c;每小题3分&#xff0c;共30分) &#xff08;Josephus问题&#xff09;有n个人围成一个圈&#xff0c;依次标号0至n-1。从0号开始&#xff0c;依次 0&#xff0c;1&#xff0c;0&#…

uni-starter:云端一体应用快速开发的新选择

一、引言 随着移动互联网的快速发展&#xff0c;应用开发面临着日益增长的效率挑战。如何在保证应用功能丰富性的同时&#xff0c;快速迭代和上线&#xff0c;成为了众多开发者关注的焦点。在这样的背景下&#xff0c;uni-starter作为一款集成商用项目常见功能的云端一体应用快…