📚 Retrofit 简介

网络请求与数据加载实战

❓ Retrofit 是什么

Retrofit 是 Square 公司出品的类型安全的 HTTP 客户端,专为 Android 和 Java 设计。通过注解将 HTTP API 声明为 Java 接口,自动生成实现代码,让网络请求变得优雅且可维护。

🔗 与 OkHttp 的关系

Retrofit 底层基于 OkHttp 完成实际的网络通讯。OkHttp 是高效、轻量的 HTTP 引擎,而 Retrofit 在其上提供了声明式 API、数据转换器、请求适配器等高级抽象。二者配合,如虎添翼。

⭐ 核心优势

注解驱动、自动序列化/反序列化、支持多种数据格式 (Gson, Moshi, Protobuf…)、与 RxJava / Kotlin 协程无缝集成、请求拦截、连接池复用、测试友好。

🧩 Retrofit · OkHttp 软件架构

Retrofit 声明式 API · 注解解析 Converter · Adapter ( 接口定义 + 自动实现 ) OkHttp 连接池 · 拦截器 · 缓存 Socket · HTTP/2 · 桥接 ( 真正的网络执行者 ) 底层委托 OkHttpClient 🔥 最佳拍档 · 生产级网络栈

⬆ Retrofit 负责优雅声明,OkHttp 负责高效传输

🚀 Retrofit 核心优势

优势维度具体说明开发体验提升
注解驱动通过 @GET, @POST, @Path, @Query 等声明请求,无需手写模板代码代码量减少 60% 以上,可读性极强
自动序列化内置 Gson / Jackson / Moshi 等 Converter,直接返回 Java 对象告别手动解析 JSON,类型安全
无缝协程/Rx支持 Call, RxJava, Kotlin 协程 (suspend) 等多种适配器异步代码简洁,轻松切换线程
拦截器机制基于 OkHttp 拦截器,可添加日志、重试、Header 注入统一处理认证、监控、缓存
测试友好可 mock 接口实现,或使用 MockWebServer 模拟单元测试覆盖率大幅提升
  • 🛡️ 类型安全 — 编译期检查 URL 与参数
  • ⚡ 高性能 — 底层 OkHttp 连接池 & 多路复用
  • 🧩 模块化 — 自定义 Converter / Adapter
  • 📦 轻量依赖 — 仅 200KB 左右
  • 🌐 支持多 BaseUrl — 动态路由
  • 🧪 易于测试 — 同步/异步 mock
  • 📋 注解丰富 — @Header, @Field, @Part…
  • 🔌 扩展生态 — RxJava, LiveData, Flow

📄 代码示例 · Retrofit 接口声明

// 定义 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");