是否有适用于Android的最佳API客户端模式?

时间:2014-06-19 17:20:28

标签: java android rest design-patterns serialization

这个问题可能看起来很主观,因为我不确定如何提出这个问题,以便得出客观答案。在Android中创建REST API客户端是否有最佳使用设计模式?

通常我:

  • 将我的所有API方法放在静态APIClient类
  • 将手动序列化代码编写到我从API中获取的每个模型中(主要是因为有时添加序列化库似乎更复杂)。
  • 让活动处理成功和错误响应。

但是我也看到很多代码为每种类型的API调用都有不同的类,扩展了类AbstractAction和AbstractResponse。看起来很多人都有自己的,非常不同的方式,这很奇怪,因为编写API客户端是编写应用程序时必须要做的第一件事。那么有没有正确的方法来做到这一点,或者至少是一种更好的方法呢?

1 个答案:

答案 0 :(得分:3)

最佳模式是各种模式的组合。它受到你应该做的活动类型的影响。

对于某些推荐的设计模式,请参阅:Google I/O 2010 - Android REST client applications

为了访问其余的API,已经有几个专为此特定目的而设计的库(例如,改造,排球,其中一些)他们抽象网络访问以及序列化,自己做这些,似乎有点过头了除非有特殊原因这样做。

例如,在retrofit中,这很简单:

API作为接口

public interface GitHubService { 
  @GET("/users/{user}/repos")
  List<Repo> listRepos(@Path("user") String user); 
}

使用适配器

RestAdapter restAdapter = new RestAdapter.Builder() 
      .setEndpoint("https://api.github.com")
      .build(); 

GitHubService service = restAdapter.create(GitHubService.class);

List<Repo> repos = service.listRepos("octocat");

这需要进行所有序列化和反序列化(通过改进2.0,序列化已经分离,并且应该通过模块插入)。

有关于凌空here

的官方示例/教程