Feign 系列(02)Why Feign
时间:2019-09-21 10:12:03
收藏:0
阅读:97
Feign 系列(02)Why Feign
1. 什么是 Feign
Feign
的英文表意为“假装,伪装,变形”, 是一个 Http 请求调用的轻量级框架,可以以 Java 接口注解的方式调用 Http 请求,而不用像 Java 中通过封装 HTTP 请求报文的方式直接调用。
Feign
通过处理注解,将请求模板化,当实际调用的时候,传入参数,根据参数再应用到请求上,进而转化成真正的请求,这种请求相对而言比较直观。
Feign
被广泛应用在 Spring Cloud 的解决方案中,是学习基于 Spring Cloud 微服务架构不可或缺的重要组件。
Feign
开源项目地址:https://github.com/OpenFeign/feign
2. Feign解决了什么问题
2.1 封装 HTTP 调用流程,面向接口编程
在服务调用的场景中,我们经常调用基于 Http 协议的服务,而我们经常使用到的框架可能有HttpURLConnection、Apache HttpComponnets、OkHttp3 、Netty 等等,这些框架在基于自身的专注点提供了自身特性。而从角色划分上来看,他们的职能是一致的提供 Http 调用服务。具体流程如下:
gantt
dateFormat YYYY-MM-DD
title Adding GANTT diagram functionality to mermaid
section 现有任务
已完成 :done, des1, 2014-01-06,2014-01-08
进行中 :active, des2, 2014-01-09, 3d
计划一 : des3, after des2, 5d
计划二 : des4, after des3, 5d
客户端 -> Client框架: 构建请求行
客户端 -> Client框架: 构建请求头
客户端 -> Client框架: 构建请求体
Client框架 -> 服务端: 发送Http请求
服务端 --> Client框架: 返回报文
Client框架 --> 客户端: 提取报文信息,解析成JavaBean
sequenceDiagram
张三 ->> 李四: 你好!李四, 最近怎么样?
李四-->>王五: 你最近怎么样,王五?
李四--x 张三: 我很好,谢谢!
李四-x 王五: 我很好,谢谢!
Note right of 王五: 李四想了很长时间, 文字太长了<br/>不适合放在一行.
李四-->>张三: 打量着王五...
张三->>王五: 很好... 王五, 你怎么样?

2.2 兼容各种 REST 声明式规范
JAX-RS、Feign、Spring Cloud Open Feign、Spring Web MVC注解驱动特性。
REST框架 | 使用场景 | 请求映射注解 | 请求参数 |
---|---|---|---|
JAX-RS | 客户端声明、 服务端声明 |
@Path | @*Param |
Feign | 客户端声明 | @RequestLine | @Param |
Spring Cloud Open Feign | 客户端声明 | @ReqeustMapping | @RequestParam |
Spring Web MVC | 服务端声明 | @ReqeustMapping | @RequestParam |
原文:https://www.cnblogs.com/binarylei/p/11561456.html
评论(0)