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

OpenFeign VS Retrofit(openfeign是什么)

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

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是什么)” 的相关文章

Git分布式系统---Gitlab多人工作流程

前言在上一次推文中,我们已经很清楚的讲解了如何创建本地仓库、提交(push)项目到远程仓库以及从远程仓库clone(克隆)项目到本地的相关操作。大家可以先去看前面的推文(快速掌握Git分布式系统操作)点击查看目前无论你是否步入社会还是在校学生,都会使用Gitlab来进行团队的代码管理。(可以这样说:...

我的VIM配置

写一篇关于VIM配置的文章,记录下自己的VIM配置,力求简洁实用。VIM的配置保存在文件~/.vimrc中(Windows下是C:\Users\yourname \_vimrc)。VIM除了自身可配置项外,还可插件扩展。VIM的插件一般用vundle或vim-plug来管理,但我力求简单,不打算装太...

30 个纯 HTML5 实现的游戏

浏览器和 JavaScript 的功能逐年不断的变强变大。曾几何时,任何类型的游戏都需要Flash。但随着 HTML5 发展,HTML5 + WebGL 游戏式就慢慢占领着这个舞台。以下是30款流行的游戏,它们可以在所有现代浏览器中运行,并且只使用web技术构建。1. HexGL地址:http://...

三维家-系统快捷键使用

快键件使用:通过简单的键盘+鼠标操作,快速完成搭配。1.基础快捷键1) Ctrl+V:复制选中对象第一步:鼠标左击物体,按下Ctrl+V 即可复制选中对象。2) Ctrl+G:组合多选对象第一步:按住Ctrl键多选对象--按住Ctrl+G--确定。3) Ctrl+B:解组选中对象第一步:左击选中对象...

VUE-router

七.Vue-router1、什么是vue-routervue-router是vue.js官方路由管理器。vue的单页应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。传统页面切换是用超链接a标签进行切换。但vue里是用路由,因为我们用Vue做的都是单页应用,就相当于只有一个主的i...

一套代码,多端运行——使用Vue3开发兼容多平台的小程序

介绍Vue3发布已经有一段时间了,从目前来看,其生态还算可以,也已经有了各种组件库给予了支持,但是不管是Vue3还是Vue2都无法直接用来开发小程序,因此国内一些技术团队针对Vue开发了一些多端兼容运行的开发框架,今天来体验一下使用Taro来体验一下使用Vue3开发多平台运行的小程序,以便于兼容各大...