Retrofit 是 Square 公司出品的类型安全的 HTTP 客户端,专为 Android 和 Java 设计。通过注解将 HTTP API 声明为 Java 接口,自动生成实现代码,让网络请求变得优雅且可维护。
Retrofit 底层基于 OkHttp 完成实际的网络通讯。OkHttp 是高效、轻量的 HTTP 引擎,而 Retrofit 在其上提供了声明式 API、数据转换器、请求适配器等高级抽象。二者配合,如虎添翼。
注解驱动、自动序列化/反序列化、支持多种数据格式 (Gson, Moshi, Protobuf…)、与 RxJava / Kotlin 协程无缝集成、请求拦截、连接池复用、测试友好。
⬆ Retrofit 负责优雅声明,OkHttp 负责高效传输
| 优势维度 | 具体说明 | 开发体验提升 |
|---|---|---|
| 注解驱动 | 通过 @GET, @POST, @Path, @Query 等声明请求,无需手写模板代码 | 代码量减少 60% 以上,可读性极强 |
| 自动序列化 | 内置 Gson / Jackson / Moshi 等 Converter,直接返回 Java 对象 | 告别手动解析 JSON,类型安全 |
| 无缝协程/Rx | 支持 Call, RxJava, Kotlin 协程 (suspend) 等多种适配器 | 异步代码简洁,轻松切换线程 |
| 拦截器机制 | 基于 OkHttp 拦截器,可添加日志、重试、Header 注入 | 统一处理认证、监控、缓存 |
| 测试友好 | 可 mock 接口实现,或使用 MockWebServer 模拟 | 单元测试覆盖率大幅提升 |
// 定义 GitHub API 接口
public interface GitHubService {
@GET("users/{user}/repos")
Call<List<Repo>> listRepos(@Path("user") String user);
}
// 创建 Retrofit 实例 (自动集成 OkHttp)
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();
GitHubService service = retrofit.create(GitHubService.class);
Call<List<Repo>> repos = service.listRepos("square");