如何在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猫
随时随地看视频慕课网APP