Retrofit 是干啥的?
本文最后更新于 2025-04-01,文章超过7天没更新,应该是已完结了~
1. 什么是 Retrofit?
Retrofit 是一个 网络请求库,用来 简化 API 调用,让你像调用普通方法一样,轻松发起 HTTP 请求,并拿到服务器返回的数据。
你可以把 Retrofit 理解为:
✅ “网络请求的自动化管家” —— 你只需要写接口,Retrofit 帮你完成 请求的创建、发送、解析、返回。
2. 如果不用 Retrofit,会怎么写?(传统方式)
假设你要请求一个 AI 接口(类似 ChatGPT):
🔴 原始做法(手写 OkHttp
请求)
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.example.com/chat")
.post(RequestBody.create(
MediaType.parse("application/json"),
"{\"prompt\": \"你好,介绍一下 Retrofit\"}"
))
.build();
Response response = client.newCall(request).execute();
String result = response.body().string();
System.out.println("AI 回复:" + result);
问题: ❌ 代码长、结构复杂
❌ 需要手动解析 JSON
❌ 不能自动管理线程
3. Retrofit 解决了什么问题?
Retrofit 让网络请求 像调用方法一样简单!
✅ 用接口定义 API
public interface ChatApi {
@POST("/chat")
Call<ChatResponse> chat(@Body ChatRequest request);
}
✅ 创建 Retrofit 实例
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.example.com") // API 地址
.addConverterFactory(GsonConverterFactory.create()) // 自动解析 JSON
.build();
ChatApi chatApi = retrofit.create(ChatApi.class);
✅ 直接调用 API
ChatRequest request = new ChatRequest("你好,介绍一下 Retrofit");
chatApi.chat(request).enqueue(new Callback<ChatResponse>() {
@Override
public void onResponse(Call<ChatResponse> call, Response<ChatResponse> response) {
System.out.println("AI 回复:" + response.body().getText());
}
@Override
public void onFailure(Call<ChatResponse> call, Throwable t) {
System.err.println("请求失败:" + t.getMessage());
}
});
Retrofit 的优势: ✅ 代码简洁:不用写一堆 OkHttp
代码
✅ 自动解析 JSON:不用 response.body().string()
再 JSON.parse()
✅ 异步/同步请求:支持 Call
(同步)和 enqueue
(异步)
✅ 线程管理:可结合 RxJava 自动切换线程
4. Retrofit 的底层工作原理
Retrofit 本质上是 基于 OkHttp,做了封装: 1️⃣ 定义接口(@GET
、@POST
)
2️⃣ 动态代理(生成网络请求代码)
3️⃣ 底层用 OkHttp 执行请求
4️⃣ 返回数据,并自动解析 JSON
Retrofit 让我们 不用关心底层 HTTP 细节,只需要专注于 API 逻辑。
5. 总结
Retrofit 就是一个“网络请求自动化工具”,简化 HTTP 请求,自动解析数据,让网络调用像本地方法一样简单! 🚀
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 MateHecho