返回

Retrofit2 与服务端实例讲解

Android

对于那些还不熟悉 Retrofit2 的朋友们,简单来说它是一个用于实现 RESTful API 的 Android 客户端库。它提供了类型安全的方法来创建网络请求,处理响应,并将其与 Java 对象模型映射。如果你还没有接触过 Retrofit2,我强烈建议你阅读此博客文章,它将从头到尾指导你完成整个过程。

实践,实践,再实践

正如我刚才提到的,网络上对 Retrofit2 的各种介绍文章已经很多了,不过往往只是对其用法进行介绍,而缺少相应的实践。这是因为网络上的免费 API 接口返回的数据格式和访问模式(一般都只能使用 Get 模式)有限制,另一方面是因为并不是每位开发者都会写服务端接口。这样就造成了在学习 Retrofit2 时,仅仅依靠文章和教程是远远不够的,实践才是最重要的。

服务器端实例

为了让大家更好地理解 Retrofit2 的使用,我将通过一个简单的服务器端实例来演示如何使用 Retrofit2 与服务端进行交互。

首先,我们需要创建一个简单的 Node.js 服务器。你可以使用以下命令来创建它:

npm init -y
npm install express

然后,在你的项目目录中创建一个名为 server.js 的文件,并添加以下代码:

const express = require('express');

const app = express();
app.use(express.json());

app.get('/users', (req, res) => {
  res.json([
    { id: 1, name: 'John Doe' },
    { id: 2, name: 'Jane Doe' },
  ]);
});

app.listen(3000, () => {
  console.log('Server listening on port 3000');
});

这个服务器将侦听端口 3000,并提供一个名为 /users 的端点,该端点返回一个包含两个用户对象的 JSON 响应。

Retrofit2 客户端

现在我们有了服务器端,让我们创建一个 Retrofit2 客户端来与它进行交互。首先,在你的 Android 项目中添加 Retrofit2 依赖项:

dependencies {
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
}

然后,创建一个 Retrofit2 接口:

interface UserService {
    @GET("/users")
    suspend fun getUsers(): List<User>
}

这个接口定义了一个名为 getUsers() 的方法,该方法将执行一个 GET 请求到 /users 端点并返回一个 List<User>

接下来,创建一个 Retrofit2 客户端:

val retrofit = Retrofit.Builder()
    .baseUrl("http://localhost:3000")
    .addConverterFactory(GsonConverterFactory.create())
    .build()

val userService = retrofit.create(UserService::class.java)

这个客户端将使用我们之前创建的 UserService 接口和我们的服务器的基 URL。

使用 Retrofit2

现在我们可以使用 Retrofit2 客户端来与服务器进行交互了。我们可以使用以下代码获取用户列表:

val users = userService.getUsers()

这个函数将执行一个异步请求,并在请求完成后返回一个 List<User>

总结

通过这个简单的示例,我们已经展示了如何使用 Retrofit2 与服务器端进行交互。你可以使用 Retrofit2 与任何提供 RESTful API 的服务器进行交互,这使得它成为构建 Android 应用程序时一个非常强大的工具。