网络应用架构

时间:2015-02-25 14:59:27

标签: android facebook rest network-programming android-volley

我正在构建一个类似于facebook应用的Android应用,旨在显示存储在数据库中的各种信息。 我在服务器端使用REST API,它根据各种POST请求返回响应,并使用facebook令牌验证。

在客户端,我使用排球库来处理网络请求。我尝试了很多可能性,但我正在寻找与服务器进行通信的最优雅的方式,因为这是一个微不足道的案例,我想你可以帮助我解决这个问题......

由于我总是检查fb令牌并发出类似的POST请求,因此我考虑添加一个Connexion objet,当提示执行时会创建一个凌空请求(POST参数...);方法,并在响应到达时调用回调方法。

但我很难决定是否应该创建一个SessionManager对象(Singleton或不是?),它可以根据代码处理来自会话相关响应的所有数据(如check login,login ...)(例如,对于每种类型的响应都是错误5xx),并且是意图。

我应该在每个活动中处理这些回复,并在那里进行意图。知道它们可能重复。 简而言之,我正在寻找应用程序必须处理常见响应时应用的最佳实践,而不是例如不常见的响应。 保持活动中的所有逻辑?创建对象? 不要犹豫发表你对这个主题的看法!

非常感谢。

编辑:使用Connexion对象结束处理所有请求(使用齐射)。至于意图,我在活动中保留了所有逻辑,并且没有使用另一个控制器。结果并不难看。主要是因为我使用了一个进行身份验证的辅助路由,所以如果你是一个邪恶的黑客,服务器总是会回答一个很大的错误。

1 个答案:

答案 0 :(得分:1)

首先,我不是在使用Volley,而是使用Apache HttpClient,但这对你的问题无关紧要。 拥有处理活动中的发布请求的代码是一个糟糕的解决方案。看到: Single Responsibility Principle

创建SessionManager的想法非常好。您可以处理SessionManager中的所有内容,而不必在您的“活动”中使用它。此外,您应该为管理会话的目的添加类。如果你从特定用户那里得到所有朋友,你应该创建一个FriendsController或FriendsManager。

处理答案也可以在一个班级完成。我假设您从API接收JSON作为响应。创建一个获取响应并返回JSONObject的类。

虽然远非完美,但请随时查看我的应用。我目前正在学习Android / Java,所以它可能没有人们想象的那么完美。处理POST的类称为YYYController而不是Manager。但这只是我使用的命名约定: My Android Project

您的通话可以返回存储不同回拨类型的枚举:

class Enum Callbacks {
    SUCCESS,
    CREATED,
    UNPROCESSABLE_ENTITY
}

在您的应用程序中,您可以像这样使用它们:

Callbacks response = SessionManager.login();
if (response == Callbacks.SUCCESS) {
    //your login logic here
}