如何使用同一域模型的多个“视图”?

时间:2013-05-21 12:03:09

标签: java oop rest

我正在使用Jackson解析我的Android应用程序的JSON。我也打算在我的REST服务器中使用它,所以我将在客户端和服务器之间共享我的模型。

我创建了一个POJO来模拟域对象“Friend”。当客户端获得https://www.myserver.com/api/1/friend/1234时,我想返回ID为1234的序列化好友,可能缺少一个或两个字段。

然而,当客户端获得https://www.myserver.com/api/1/friend/时,我想返回所有朋友对象,但是搜索结果可能更适合的数据更少(例如,只有名字,姓氏和个人资料图片,但不包括他们的列表朋友,出生日期等。)。

我应该遵循哪种模式,以便我可以根据访问方式以不同的方式表示相同的基础模型?

2 个答案:

答案 0 :(得分:1)

继承可以与@JsonIgnoreProperties一起使用。

您可以拥有一个类Friend并对其进行扩展,以限制要序列化的属性。

@JsonIgnoreProperties({ "friends", "dateOfBirth" })
class RestrictedFriend extends Friend {

}

答案 1 :(得分:0)

查看是否要使用继承。拥有一个基类,其中包含您希望与所有人共享的字段,以及一个具有更多受限数据的子类。有两个JSON API,一个用于公共信息,一个用于公共+安全信息,并根据调用的API序列化基类或子类对象。