Chr*_*Sim 23 java rest apache-httpclient-4.x jersey-client retrofit
我正在阅读许多文章,以找到最适合java应用程序的Rest Client,我发现最终使用Jersey与Apache HTTP客户端4.5很棒,但在很多文章中我发现现在Retrofit是最好的(我没有提到Volley因为在我的情况我不需要API支持缓存.
对于Java客户端应用程序,Retrofit是否更好.或者它对Android更好吗?为什么我之前没有找到这个比较......他们无法比较?
我可以比较它们的性能,连接池,它们在哪个层上工作,压缩请求和响应,超时,反序列化?
HTTP3不支持连接池,这就是为什么通常用于android的改造?所以对于普通的java应用程序来说,它将导致连接泄漏是不切实际的.
我的目标是找到具有高性能的最佳Rest API客户端,并支持大量连接.
先感谢您
aha*_*aha 33
你把不同的东西混合在一起.事先清理事情:
Retrofit是一个与REST API交互的客户端库.因此它提供了与Jersey,RESTeasy或Spring的RestTemplate相同的抽象级别.它们都允许使用类型安全的API与REST API交互,而无需处理序列化,请求构建和响应处理等低级方面.
每个库都使用下面的HTTP客户端实际与HTTP服务器通信.示例是您提到的Apache HTTP客户端,OkHttp或随JDK一起提供的普通HttpUrlConnection.
您通常可以混合和匹配除Retrofit之外的不同REST客户端库和HTTP客户端,因为自版本2以来,Retrofit 对OkHttp具有硬依赖性(使用Retrofit 1.x,您可以使用Apache HTTP Client,HttpUrlConnection或OkHttp).
回到实际问题:什么时候选择.
Android:这很容易,因为Android上不支持JAX-RS,Jersey和RESTeasy背后的API /技术.因此,如果你不想直接谈论HTTP,那么Retrofit或多或少是你唯一的选择,除了Volley.Spring也不可用,而Spring则被放弃了.
JRE/JDK:您可以在这里选择各种选项.
关于性能:这里的主要驱动因素是执行HTTP和(反)序列化所花费的时间.因为(de)序列化是由像Jackson或protobuf这样的专业库执行的,并且都使用相同的(或者你至少可以使它们),所以不应该有任何有意义的差异.
花了一段时间才找到,但是我找到了完美的 REST 客户端库,它使我们的开发声明式且简单。在开发新的 REST 实现或 API 时,我们可以将其用作标准。
它被称为 Feign,由 Netflix 团队开发并与 Spring Cloud Netflix 合作。更多细节在这里对项目的网站。
一些功能包括: - 与 Jackson、Gson 和其他编码器/解码器的集成 - 使用 OkHttp 进行网络通信,一个经过验证的 HTTP 库 - 与 SLF4J 绑定用于日志记录功能 - 基于接口的实现,最少的开发。下面是一个示例客户端:
@FeignClient("stores")
public interface StoreClient
{
@RequestMapping(method = RequestMethod.GET, value = "/stores")
List<Store> getStores();
@RequestMapping(method = RequestMethod.POST, value = "/stores/{storeId}", consumes = "application/json")
Store update(@PathVariable("storeId") Long storeId, Store store);
}
Run Code Online (Sandbox Code Playgroud)
在@aha 的回答之后,引用如下:
JRE/JDK:在这里您可以选择完整的选项。
如果您想要一个快速简便的解决方案来实现没有可用的 SDK 或 JAX-RS 接口的第三方 API,那么 Retrofit 可能会很好。
如果您使用的是 Spring 并且没有 JAX-RS 接口或者您不想购买 JAX-RS,即也在服务器端使用它,则 Spring 的 RestTemplate 是一个不错的选择。
如果您想在客户端和服务器之间共享接口定义,或者您完全使用 JavaEE,JAX-RS(Jersey、RESTeasy 等)是一个不错的选择。
Feign 像改造和 JAX-RS 一起工作:简单的解决方案,可以在客户端和服务器之间共享接口定义,可以使用 JAX-RS 接口
归档时间: |
|
查看次数: |
11053 次 |
最近记录: |