当前位置:首页 > 技术分析 > 正文内容

OpenFeign VS Retrofit(openfeign是什么)

ruisui883个月前 (02-03)技术分析15

Retrofit是一个安全的HttpClient,它广泛适用于Android和Java 相关的编程。它可以将HTTP API通过声明式的方式写入Java接口中。

OpenFeign是一个声明式的网络服务端。它使得Web服务的客户端编写更加便利,通过接口和注解,构建应用。

(一)Retrofit与OpenFeign使用介绍

Retrofit构建一般的流程如下:

  1. Java 接口书写方式
public interface GitHubService {
  @GET("users/{user}/repos")
  Call> listRepos(@Path("user") String user);
}
  1. Retrofit 对象初始化与接口构建
Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("")
    .build();

GitHubService service = retrofit.create(GitHubService.class);
  1. 接口使用方式
Call> repos = service.listRepos("octocat");

参考文件:
https://square.github.io/retrofit/

OpenFeign构建一般的流程如下:

OpenFeign一般是基于springcloud进行开发,下述例子描述内容均基于springcloud

@SpringBootApplication
@EnableFeignClients
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

StoreClient.java

@FeignClient("stores")
public interface StoreClient {
    @RequestMapping(method = RequestMethod.GET, value = "/stores")
    List getStores();

    @RequestMapping(method = RequestMethod.GET, value = "/stores")
    Page getStores(Pageable pageable);

    @RequestMapping(method = RequestMethod.POST, value = "/stores/{storeId}", consumes = "application/json")
    Store update(@PathVariable("storeId") Long storeId, Store store);
}

参考文档:

https://cloud.spring.io/spring-cloud-openfeign/reference/html/

demo地址:
https://gitee.com/ddmonk/feign-demo

(二)Retrofit VS OpenFeign

从Google也搜索到一些对与两个选型的一些讨论,笔者结合自身开发经验,整理了一些内容。

Retrofit与OpenFeign相似点

  1. 两者均是提供type-safe的HttpClient。
  2. 都简化了整体接口的实现,自动完成将Json或XML转化为POJO
  3. 两者均可以通过简单的配置完成相关服务。

OpenFeign优势

  • 对于Spring boot应用有天然的支持特性。
  • 支持服务发现[Eureka]与客户端负载[Ribbon]
  • 支持Hystrix服务熔断功能
  • 可以动态的配置HttpClient的包,如启动okhttp等。
  • 相比之下,返回的内容直接是POJO,而Retrofit返回Call

Retrofit优势

  • Retrofit对Android应用适配较好。
  • 相比之下,查询参数不需要在URL里面显示书写,只需使用@Query即可。
  • 对SSL对支持,相对于OpenFeign,它使用更加便利。
  • 由于其更加底层,所以对一些interceptor的编写更加友好,比如说你需要查看Request与Response的结果并计算他们返回的时间情况。
  • Retrofit做了很多报文内容的优化。相见https://www.notion.so/Intercept-e35c3a3cc5c9459689525b947f557d93

(三)总结

OpenFeign作为Spring Cloud中的一个组件,所以对于Spring Cloud的其他组件支持力度较好,支持Ribbon、Hystrix等,Retrofit相关内容均需自己完成。但是OpenFeign整个框架由于封装的十分完善,整个的灵活度有所欠缺。比如说我要做Url的多路转发等实现比较复杂,且现在只提供Request的Interceptor,相比之下Retrofit在这方面提供更加丰富,只需要实现一个Interceptor即可完成对Request、Response相关的操作。

总结下来,如果是SpringCloud相关项目且有一套较为晚上对微服务架构,使用OpenFeign将使你事半功倍。如果你是非Spring项目,或者你的项目中有很多需要在Request请求过程中做一些操作,比如根据Header中的某个字段进行客户端路由、权限配置等,相较于OpenFeign,你的可编程性更强。

参考文件:

https://www.javacodemonk.com/retrofit-vs-feign-for-server-side-d7f199c4

https://sylvainleroy.com/2018/04/13/rest-http-client-feign-vs-retrofit-2/

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/1199.html

标签: feign 使用
分享给朋友:

“OpenFeign VS Retrofit(openfeign是什么)” 的相关文章

财务主管花了一周时间自制费用报销管理系统,是我见过最好用的

公司的费用报销又多又乱,一不小心就出错!头疼,财务主管花了一周时间自制费用报销管理台账,分类统计,重复报销还能自动提醒,真的少了很多麻烦!费用报销是财务日常工作必会面对的,各种票据太多太乱,搞的很烦,还好有同事给的的费用报销管理系统,只需要对基础数据进行登记,就可以自动统计然后生成,没有比这个更清楚...

国产操作系统上Vim的详解03--安装和使用插件 | 统信 | 麒麟 | 中科方德

原文链接:国产操作系统上Vim的详解03--使用Vundle插件管理器来安装和使用插件 | 统信 | 麒麟 | 中科方德Hello,大家好啊!今天给大家带来一篇在国产操作系统上使用Vundle插件管理器来安装和使用Vim插件的详解文章。Vundle是Vim的一款强大的插件管理器,可以帮助我们轻松地安...

HTML5最新版本介绍

HTML5是HTML4.01和XHTML1.0之后超文本标记语言的最新版本,由一群自由思想者设计,最终实现了多媒体支持、交互性、更智能的表单和更好的语义标注。 HTML 5不只是 HTML规范的最新版本,它是用于生成现代 Web内容的一系列相关技术的总称,其中最重要的三个技术是:HTML5核心规范...

HTML5+眼球追踪?黑科技颠覆传统手机体验

今天,iH5工具推出一个新的神秘功能——眼动追踪,可以通过摄像头捕捉观众眼球活动!为了给大家具体演示该功能的使用,我做了一个案例,供大家参考。实际效果如下:案例比较简单,就是通过眼动功能获取视觉焦点位置,剔除用户看中的牌。现在,舞台的属性中多了一个“启用眼动”的选项,另外,还多了一个“启用摄像头”的...

虚幻引擎5.5发布

IT之家 11 月 13 日消息,虚幻引擎 5.5 现已发布。据介绍,新版本虚幻引擎在动画创作、虚拟制作和移动游戏开发方面取得进步;渲染、摄像机内视觉特效和开发人员迭代等领域的部分功能已可用于生产。IT之家整理部分功能亮点如下:动画Sequencer增强虚幻引擎的非线性动画编辑器 Sequencer...

vue-router是如何解析query参数呢? #前端

vue-router 中的 query 解析。1. 大家好,我是龙仔。今天来分享 vue-router 是如何解析快乐参数的,因为使用 vue 路由会传 query 参数和快乐参数,所以从 vue 的角度来看如何解析传递的快乐参数。2. 基础知识大家应知道,快乐参数结构如:a、b、c、a、b、c、a...