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

[复制链接]
发表于 2025-12-26 13:55:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

  • 起首编写服务提供者代码,也就是创建一个springboot项目,端口默认8080即可,然后新建一个接口,启动项目之后可以通过http://localhost:8080/api/data直接访问
  1. @RestController
  2. @RequestMapping("/api")
  3. public class DataController {
  4.     @GetMapping("/data")
  5.     public String getData() {
  6.         return "Hello from Producer!";
  7.     }
  8. }
复制代码

  • 然后编写服务斲丧者代码,端口设置为8081,启动类加@EnableFeignClients,访问http://localhost:8081/consumer/data仍旧可以返回效果
  1. @FeignClient(name = "producer", url = "http://localhost:8080")
  2. public interface ProducerClient {
  3.     @GetMapping("/api/data")
  4.     String getData();
  5. }
复制代码
  1. @RestController
  2. @RequestMapping("/consumer")
  3. public class ConsumerController {
  4.     @Autowired
  5.     private ProducerClient producerClient;
  6.     @GetMapping("/data")
  7.     public String getDataFromProducer() {
  8.         return producerClient.getData();
  9.     }
  10. }
复制代码

  • 总结


  • 在这个案例中,是基于 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 哀求息争析相应的工作量。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表