首页 > 编程语言 >Java Http客户端选型

Java Http客户端选型

时间:2022-08-30 22:46:18浏览次数:96  
标签:Feign Java 框架 Spring 使用 https spring Http 客户端

JDK自带

HTTPURLConnect:功能单一

Apache HttpClient

https://hc.apache.org/index.html

是一个比较古老的HTTP框架,使用非常普遍。

OkHTTP

https://square.github.io/okhttp/

HTTP框架新秀,具备一些新特性,如:支持HTTP2,连接池,响应缓存等。

Netty

https://netty.io/
基于原始套接字实现的比较底层的网络编程库。

REST Template & WebClient

https://docs.spring.io/spring-framework/docs/current/reference/html/integration.html#spring-integration

Spring Framework提供的REST客户端,实际上是一个框架级的封装,底层的通信实现可以基于HTTPURLConnection,Apache HttpClient,OKHttp,以及Netty,当项目中使用了Spring框架时可以直接使用该API。
缺点:与Spring框架绑定, 必须使用Spring框架才能使用该API。

Feign

https://github.com/OpenFeign/feign

Feign跟Spring Framework中提供的RestTemplate类似,也是一个框架级的封装,而且是一个完全可以基于注解配置的API库。
底层的通信实现也可以基于HTTPURLConnection,Apache HttpClient,OKHttp,甚至是Java11 Http2。
同时,Feign还提供了一些在业务层非常方便使用的特性,如:重试,请求参数编码器,响应结果编码器等等。
相比起上述其他客户端而言,Feign提供的特性更加便于业务层使用。

另外,Spring Cloud框架还将Feign与Spring进行了集成,独立出一个新的模块:spring-cloud-openfeign

当在项目中没有使用Spring Framework时,可以独立使用Feign框架。
如果在项目中已经使用Spring Framework,最便利的方式是直接使用spring-cloud-openfeign,该模块已经提供了一些在Spring容器环境下使用Feign框架的注解,可以大大提高生产效率。

关于Feign的使用可以参考:Feign入门介绍Feign实现动态URLFeign实现文件上传下载

标签:Feign,Java,框架,Spring,使用,https,spring,Http,客户端
From: https://www.cnblogs.com/nuccch/p/16641158.html

相关文章

  • JAVA入门基础_从零开始的培训_MYSQL基础
    目录1、数据库概述与MYSQL5.7、MYSQL8.0安装篇(基于Windows)MYSQL是什么,为什么要使用MYSQLMYSQL的四个版本MYSQL环境搭建MYSQL的安装与卸载Windows10下安装MYSQL8.26版......
  • JAVA入门基础_从零开始的培训_MYSQL高级
    目录第1章Linux下MySQL的安装与使用Linux下MYSQL的卸载安装MYSQL之前的准备步骤正式安装检查/tmp临时目录权限安装前检查依赖并卸载mariadb按照顺序依次安装MYSQL服务的初......
  • 工具函数(JavaScript)——如何判断设备是不是移动端
    浏览器有一个Navigator接口,表示用户代理的状态和标识。Navigator.userAgent可以知道客户端的设备类型。请求的请求标头有一个user-agent字段,内容中包含了设备型号的信......
  • Java常用编程类库
    Java语言已经有许多非常成熟的开源基础类库,封装了日常开发中的各种常用操作,如:对象判空,字符串编码,本地缓存等等。可以直接在项目中引入对应类库使用即可,或者参与完善相应类......
  • java springboot 初体验 (十二)对接eureka
    上一篇javaspringboot初体验(十一)对接mysqlhttps://www.cnblogs.com/zwjvzwj/p/16620045.html搭建一个eureka注册服务 创建服务     pom文件......
  • Java控制台打印三角形
    for(inti=1;i<=5;i++){//最上面先是五个往下一次4.3.2.1for(intj=5;j>=i;j--){System.out.print("");}for(intj=1;......
  • 第一次运行JAVA程序
    第一次运行JAVA程序创建一个txt文件,在文件中敲入以下代码publicclassHello{ publicstaticvoidmain(String[]args){ System.out.print("HelloWorld!"); }}......
  • java的Scanner中next()与nextLine()的区别
    1.区别最近在做笔试题的时候需要自己写输入,所以碰到了在输入字符串的时候无法输入的问题。所以赶紧来补习功课。先说结果next()不可以接受空格、回车以及Tab,但是得等到有......
  • java打印九九乘法表
    //1.我们先打印第一列//2.把国定的一个1再用一次循环包起来//3.去掉重复项i<=j//4.调整样式for(intj=1;j<=9;j++){for(inti=1;i<=j;i++){......
  • 【ElasticSearch】常用的JAVA API(长期更新)
    背景主要介绍和整理ElasticSearch常用的API环境SpringBoot2.1+MavenMaven依赖<dependency><groupId>org.elasticsearch</groupId>......