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

  1. 首先编写服务提供者代码,也就是创建一个springboot项目,端口默认8080即可,然后新建一个接口,启动项目之后可以通过http://localhost:8080/api/data直接访问
java 复制代码
@RestController
@RequestMapping("/api")
public class DataController {

    @GetMapping("/data")
    public String getData() {
        return "Hello from Producer!";
    }
}
  1. 然后编写服务消费者代码,端口设置为8081,启动类加@EnableFeignClients,访问http://localhost:8081/consumer/data依旧可以返回结果
java 复制代码
@FeignClient(name = "producer", url = "http://localhost:8080")
public interface ProducerClient {

    @GetMapping("/api/data")
    String getData();
}
java 复制代码
@RestController
@RequestMapping("/consumer")
public class ConsumerController {

    @Autowired
    private 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 请求和解析响应的工作量。

相关推荐
JoyCong19985 小时前
打破远程协助的安全信任困局,ToDesk AI审计功能自动操作留痕
网络·人工智能·科技·安全·电脑·远程工作
Mr.HeBoYan7 小时前
一次持续三天才出现的丢包故障——深入解析 DPDK Memory Ordering、rte_ring 与 CPU Memory Barrier (下)
linux·网络·算法·架构·dpdk
豆浆D油条11 小时前
QT容器类QList调用erase崩溃
开发语言·qt·rpc
kp0000011 小时前
System Prompt Leakage(系统提示词泄露)及安全防御
网络·安全·网络安全·信息安全·prompt·ai安全
许彰午11 小时前
02-网络的抽象层
网络·智能路由器
ttod_qzstudio11 小时前
【软考备考】计算机网络详解:OSI/TCP-IP 分层 + IP 子网划分,一篇拿下网络模块(附 10 道练习)
网络·tcp/ip·计算机网络·软考
Geek-Chow12 小时前
A Practical Tour of AWS Networking: VPCs, Subnets, Gateways, and More
网络·aws
数据知道12 小时前
网络地址转换(NAT)与安全:映射原理、打洞与内网暴露风险
网络·安全·智能路由器·内网安全
KaMeidebaby13 小时前
卡梅德生物技术快报|原核膜蛋白表达优化实操手册,膜蛋白的纯化梯度洗脱完整流程
前端·网络·数据库·人工智能·算法
神奇霸王龙13 小时前
可审计 Agent 对比:5 旗舰步骤回放
网络·图像处理·人工智能·python·ai·ai编程