由于我对使用像 Retrofit 这样的 Android 第三方 HTTP 库还很陌生,所以有几个问题我想请教您,谁可以帮助我。
从 Retrofit 1.9 到 2.0 的过渡似乎最近发生了很大的变化,例如 API 的变化。所以我找不到使用该库的合适文档,即使在它自己的网页上也是如此。
当谈到在服务器上实现注册用户的 HTTP 请求时,根据网页,似乎首先要做的是创建一个定义角色的接口(interface)(例如 POST、GET 等)。例如:
public interface GitHubService {
@GET("/users/{user}/repos")
Call<List<Repo>> listRepos(@Path("user") String user);
}
看来我应该创建一个 Retrofit 实例来连接到服务器并使用
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com")
.build();
GitHubService service = retrofit.create(GitHubService.class);
我真正想知道的是,
上面泛型中的Repo是什么意思?这是我仍然无法弄清楚的第一件事。
@POST 或@GET 等注释后面的括号中应该写什么?是服务器URL下的子目录吗?根据上面的示例代码,@GET 注释是否声明 listRepos 方法从“用户”路径或其他什么地方获取用户值?这太令人困惑了..
拜托,我对这个世界真的很陌生,所以我非常需要你的帮助。提前致谢。
最佳答案
- 本例中的“Repo”表示 Github 上的存储库。 Retrofit 自动反序列化对 Java POJO 的 JSON 响应。该示例从 Github API 获取有关 Github 存储库的信息,获取的存储库信息由 Repo 类/Repo 对象列表表示。您必须提供您自己的类表示您从服务器/API 获取的数据。
-
Does it mean a subdirectory under the server URL?
基本上,是的。它是您尝试在使用 baseUrl
指定的服务器上访问的资源的路径/Uri。
在这种情况下,我们有 baseUrl
https://api.github.com
。我们附加路径 /users/{user}/repos
。方法
@GET("/users/{user}/repos")
Call<List<Repo>> listRepos(@Path("user") String user);
将用户 ID 作为参数并将 {user}
替换为该参数。
因此,如果您使用参数 JakeWharton
调用该方法,完整的 Uri 是
https://api.github.com/users/JakeWharton/repos
您可以从浏览器调用它以查看响应。 您必须更改这些 Url/Uri 字符串以匹配您要访问的 API。
.
关于android - 在 Android 中使用 Retrofit 2.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32771021/