如何在RESTful API中处理多对多关系?
想象一下,你有2个实体,玩家和团队,玩家可以在多个团队中。在我的数据模型中,我有一个每个实体的表,以及一个用于维护关系的连接表。Hibernate可以很好地处理这个问题,但是我如何在RESTful API中公开这种关系呢?
我可以想几个方面。首先,我可能让每个实体都包含另一个实体的列表,因此Player对象将拥有它所属的Teams列表,并且每个Team对象都有一个属于它的Players列表。因此,要向团队添加播放器,您只需将播放器的表示形式发布到端点,例如POST /player
或POST /team
,并将相应的对象作为请求的有效负载。这对我来说似乎是最“RESTful”但感觉有点奇怪。
/api/team/0:{ name: 'Boston Celtics', logo: '/img/Celtics.png', players: [ '/api/player/20', '/api/player/5', '/api/player/34' ]}/api/player/20:{ pk: 20, name: 'Ray Allen', birth: '1975-07-20T02:00:00Z', team: '/api/team/0'}
我能想到的另一种方法就是将关系本身作为一种资源来揭露。因此,要查看给定团队中所有玩家的列表,您可以执行GET /playerteam/team/{id}
或类似的操作并获取PlayerTeam实体列表。要将球员添加到球队,请/playerteam
使用适当构建的PlayerTeam实体作为有效负载进行POST 。
/api/team/0:{ name: 'Boston Celtics', logo: '/img/Celtics.png'}/api/player/20:{ pk: 20, name: 'Ray Allen', birth: '1975-07-20T02:00:00Z', team: '/api/team/0'}/api/player/team/0/:[ '/api/player/20', '/api/player/5', '/api/player/34' ]
这是什么最好的做法?
慕娘9325324
jeck猫
相关分类