【发布时间】:2018-11-01 08:19:54
【问题描述】:
我阅读了本指南:https://developer.android.com/jetpack/docs/guide 并在这种情况下尝试使用存储库模式:
应用程序通过 Retrofit lib 向服务器 /get/user 发出 GET 请求,服务器的响应可能是这样的(状态为 200):
{
"user": {"name" : "Jack", "id": "99"},
"status": true
}
或像这样(状态为 200):
{ "status": false, "message": "Some error here"}
或者,例如 500 错误。
我的UserFragment 应该显示对话框,取决于服务器响应:如果一切正常 - ok 消息,如果状态 false - 来自 api 响应的错误消息,如果 500 - 其他错误消息。
我的 POJO 模型如下所示:
public class User {
private String id;
private String name;
// getters and setters omitted
}
public class ApiResponse {
private User user;
private Boolean status;
private String message;
// getters and setters omitted
}
我应该如何在存储库模式中处理它?
- 我的存储库对象是否应该将用户返回给 ViewModel?如果是 - 我的 ViewModel 如何知道 api 响应的状态和消息字段?
- 或者我的存储库对象应该直接将 ApiResponse 返回给 ViewModel,ViewModel 从中获取状态、消息和用户并将它们传递给 Fragment?但是如果我想将用户缓存到数据库怎么办?我们需要将所有 ApiResponse 存储到数据库还是只需要存储用户?
- 还是别的什么...?
我更喜欢 1,因为它对我来说更清楚,但我的问题 - 如何处理从服务器返回并需要在 Fragment 中显示数据的状态和消息字段。
【问题讨论】:
标签: android retrofit repository-pattern android-jetpack