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

标签 java android rest design-patterns serialization

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

通常我:

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

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

最佳答案

最佳 模式是各种模式的组合。它取决于您应该进行的 Activity 类型。

有关一些推荐的设计模式,请参阅:Google I/O 2010 - Android REST client applications

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

例如,在 retrofit 中就这么简单:

API 作为接口(interface)

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,序列化是分离的,应该通过模块插入)。

volley 有官方示例/教程here

关于java - 是否有适用于 Android 的最佳 API 客户端模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24312680/

相关文章:

java - 如何在Java中循环一个类属性?

java - 如何用Java机器人定位不同屏幕尺寸上的对象坐标以进行点击?

java - Java SE 5 日志记录的更新

android - Activity启动时EditText有焦点,但软键盘不显示

java - recyclerview 中的列表未排序

wcf - WCF、Rest 和 SOAP 之间是什么关系?

java - 在 Eclipse 中使用 J2EE Preview 运行时在 Java EE 中实现 RESTful 服务

java - 更改多重映射中显示的值的顺序

android - 错误 : Could not get unknown property 'iosX64' for KotlinTargetPreset in Android Studio 3. 1.4?

web-services - Spring+休息+mysql