【发布时间】:2011-02-09 17:13:13
【问题描述】:
我想在安卓手机上构建一个 REST 客户端。
REST 服务器公开了几个资源,例如(获取)
http://foo.bar/customer List of all customer
http://foo.bar/customer/4711 The customer with id 4711
http://foo.bar/customer/vip List of all VIP customer
http://foo.bar/company List of all companys
http://foo.bar/company/4711 The company with the ID 4711
http://foo.bar/company/vip List of all VIP companys
我(认为)我知道如何与 REST 服务器通信并获取我需要的信息。我会用这样的 API 实现一个 REST 客户端类
public List<Customer> getCustomers();
public Customer getCustomer(final String id);
public List<Customer> getVipCustomer();
public List<Company> getCompanies();
public Customer getCompany(final String id);
public List<Customer> getVipCompanies();
参考 Virgil Dobjanschi 的演示文稿“Developing Android REST client applications”我了解到在 Activity 的工作线程中处理 REST 请求不是一个好主意。相反,我应该使用Service API。
我喜欢拥有一个绑定到(本地)服务的 Singleton ServiceHelper 的想法,但我担心我没有正确理解服务概念。
目前我不明白如何将 REST 调用结果(在服务中异步完成)报告回调用方 Activity。我还想知道我是否需要一个服务来处理所有 REST 请求(具有不同的返回类型),或者我是否需要为每个 REST 请求提供专用服务。
可能我还有许多其他的理解问题,所以对我来说最好的事情是满足我的需求的示例应用程序。我的用例并不少见,我希望那里有示例应用程序。
请告诉我!
指出我正确实施方向的任何其他建议也很有帮助(Android API-Demo 与我的用例不匹配)。
提前致谢。
克劳斯
编辑:在 SO 上找到的类似主题(发布后)将我引向我需要的方向(最小化复杂的“Dobjanschi 模式”):
【问题讨论】:
-
Claszen,您是否对所有请求的单一服务与每个请求的专用服务有任何意见?如果可以,请分享。以我为例的场景:我有很多 REST 请求 [大约 20 个] 要在我的应用程序中使用。我已经观看了上面提到的 Google I/O 中的宝贵会议。我的问题是,哪种方法更好。让单一服务处理单一服务中的所有请求?还是为每个请求提供专门的服务?我有一些应该按顺序触发的请求,其中一些可以同时触发。有什么建议吗?
-
@user778869 我终于为每个(“顶级”)REST 资源(如“公司”、“客户”)使用了一个 IntentService 和 ResultReceiver。我发现这是一种“自然”的结构,效果很好。它可能会产生一些代码重复,但如果它在一个服务中完成,则可以防止过多地使用控制结构。
-
这可能对学习 Android REST 客户端实现的人很有帮助。 Dobjanschi 的演示文稿转录成 PDF:drive.google.com/file/d/0B2dn_3573C3RdlVpU2JBWXdSb3c/…
标签: java android design-patterns rest