使用OpenFeign实现HTTP调用的最简单案例

embedded/2024/11/19 20:55:48/
  1. 首先编写服务提供者代码,也就是创建一个springboot项目,端口默认8080即可,然后新建一个接口,启动项目之后可以通过http://localhost:8080/api/data直接访问
@RestController
@RequestMapping("/api")
public class DataController {@GetMapping("/data")public String getData() {return "Hello from Producer!";}
}
  1. 然后编写服务消费者代码,端口设置为8081,启动类加@EnableFeignClients,访问http://localhost:8081/consumer/data依旧可以返回结果
@FeignClient(name = "producer", url = "http://localhost:8080")
public interface ProducerClient {@GetMapping("/api/data")String getData();
}
@RestController
@RequestMapping("/consumer")
public class ConsumerController {@Autowiredprivate ProducerClient producerClient;@GetMapping("/data")public String getDataFromProducer() {return producerClient.getData();}
}
  1. 总结
  • 在这个案例中,是基于 HTTP 的调用,而不是传统的 RPC 调用。这里使用了 OpenFeign 来简化 HTTP 客户端的开发,通过定义接口 ProducerClient 并使用注解 @FeignClient 指定了目标服务的 URL 和接口路径,OpenFeign 会自动生成实现这个接口的 HTTP 客户端,从而让你能够像调用本地方法一样调用远程服务。

  • 具体来说,在你的例子中,ConsumerController 中的 getDataFromProducer 方法调用了 ProducerClient 接口的 getData 方法。这看起来就像是直接调用了远程服务的一个方法,但实际上,ProducerClient 是由 OpenFeign 动态生成的一个代理对象,该对象内部实现了向 http://localhost:8080/api/data 发起 HTTP GET 请求的功能,并将响应结果转换成 String 类型返回给调用者。

  • 因此,尽管从代码的角度看,调用过程类似于 RPC 调用,但实际上,这仍然是基于 HTTP 协议的 RESTful API 调用。OpenFeign 只是提供了一种更简洁的方式来处理这些 HTTP 请求,使代码更加清晰易读,减少了手动构建 HTTP 请求和解析响应的工作量。


http://www.ppmy.cn/embedded/138865.html

相关文章

容器安装gitlab

说明: 1、容器快速搭建gitlab,并将数据、配置文件、日志挂载到物理机磁盘 2、禁用不必要的gitlab插件,只部署必须的gitlab插件,减少cpu、内存等资源 3、gitlab页面禁用注册按钮,同时注意gitlab备份和恢复必须要相同版本 4、请备份gitlab两个重要配置文件:gitlab.rb、gitl…

【Python】Tkinter模块(巨详细)

专栏文章索引:Python 有问题可私聊:QQ:3375119339 本文内容系本人根据阅读的《Python GUI设计tkinter从入门到实践》所得,以自己的方式进行总结和表达。未经授权,禁止在任何平台上以任何形式复制或发布原始书籍的内容。…

【css+JavaScript 】关于链接选中且通过 js 设置持久的选中状态

1、点击后选中状态保持:当你点击任意链接时,它的颜色变为红色,并且页面刷新后仍然保留选中状态。 2、页面刷新后保持选中:即使刷新页面,选中的链接也能通过 localStorage 恢复,确保用户的选中状态持续存在…

怎样选择合适的服务器租用呢?

在数字化时代当中,企业选择合适的服务器租用是至关重要的,服务器是承载着网站和数据存储的主要核心,服务器的稳定性会影响到网站的访问速度和用户的体验感,本文就从几个方面来探讨怎样选择合适的服务器租用吧! 首先企业…

【MYSQL】什么是关系型数据库与非关系型数据库?

真正的让你快速理解什么是关系型数据库与非关系型数据库~ 主要是以查询语句,存储结构,拓展 性上的区别。 关系型数据库(最经典就是mysql,oracle):它是支持SQL语言,并且关系型数据库大部分都支持…

C# 常用三方库

C# 第三方库 C# 第三方库日志工具库REST 客户端JSON 处理App.config 文件自定义ConfigSection 的 auto 配置ORM 工具嵌入数据库条码/二维码通讯类组件串口通讯 https://www.nuget.org/packages/GodSharp.SerialPort/Modbus 通讯组件西门子通讯组件Fins协议通讯组件, 报表组件包…

pytorch训练的双卡,一个显卡占有20GB,另一个卡占有8GB,怎么均衡?

在PyTorch中实现多卡训练时,如果出现显存不均衡的问题,可以通过以下方法尝试均衡显存使用: 1. 调整DataParallel或者DistributedDataParallel策略 DataParallel:默认情况下,DataParallel会将模型放在第一块卡上&…

spring-data-elasticsearch 3.2.4 实现桶bucket排序去重,实现指定字段的聚合搜索

一、背景 es索引有一个文档CourseIndex,下面是示意: creatorIdgradesubjectnameno1002270英语听力课程一N00232DS91004380数学口算课程N00209DK71003480物理竞赛课程N00642XS21002280英语听力课程二N00432WS31002290英语听力课程三N002312DP5 在搜索的时候&#…