我在Retrofit Network Library上写了一层抽象,以便我们可以随时更改Retrofit,而对应用程序代码没有太大影响。
要使用Retrofit,我们创建一个映射到服务器API的Java接口,并使用如下所示的Retrofit类获取它的实例
public interface GitHubService {
@GET("users/{user}/repos")
Call<List<Repo>> listRepos(@Path("user") String user);
}
Retrofit类生成GitHubService接口的实现。
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com/")
.build();
GitHubService service = retrofit.create(GitHubService.class);
致电远程Web服务器。
Call<List<Repo>> repos = service.listRepos("octocat");
任何指针如何根据接收到的请求由Abstraction库在内部构建这些接口,或者有没有更好的方法为其编写抽象?
我希望传达的观点是,我们使用Retrofit的方式有些不同,因为它期望接口与我们的应用程序不知道的注释一起使用。否则,我们的应用程序将与Retrofit批注和Call等类紧密结合(请参见返回类型)。
答案 0 :(得分:0)
听起来像您刚计划在Retrofit之上编写Retrofit。 通常,您不受限于“呼叫”之类的特定改装类。 Retrofit的伟大之处在于它的灵活性,它具有适用于几乎所有设备的适配器。您可以扩展它们并获得所需的任何行为:
例如,您可以使用CallAdapter.Factory.来使Retrofit接口返回特定的Object而不是Call,如下所示:
List<Repo> listRepos(@Path("user") String user);
这里是一些用法example。不确定是您的情况,还是为了展示这个主意。
一般来说,在库顶部创建包装器之前,我建议探索其他扩展点的Retrofit源代码,其中有很多。