Imaginez que vous ayez 2 entités, Player et Team , où les joueurs peuvent faire partie de plusieurs équipes. Dans mon modèle de données, j'ai une table pour chaque entité et une table de jointure pour maintenir les relations. Hibernate gère bien cela, mais comment pourrais-je exposer cette relation dans une API RESTful?
Je peux penser à deux façons. Tout d'abord, je pourrais faire en sorte que chaque entité contienne une liste de l'autre, donc un objet Player aurait une liste des équipes auxquelles il appartient, et chaque objet Team aurait une liste des joueurs qui lui appartiennent. Donc, pour ajouter un joueur à une équipe, il vous suffirait de POSTER la représentation du joueur sur un point de terminaison, quelque chose comme POST /player
ou POST /team
avec l'objet approprié comme charge utile de la demande. Cela me semble le plus "reposant" mais ça fait un peu bizarre.
/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'
}
L'autre façon de penser à cela serait d'exposer la relation comme une ressource à part entière. Donc, pour voir une liste de tous les joueurs d'une équipe donnée, vous pouvez faire un GET /playerteam/team/{id}
ou quelque chose comme ça et récupérer une liste d'entités PlayerTeam. Pour ajouter un joueur à une équipe, POST /playerteam
avec une entité PlayerTeam correctement construite comme charge utile.
/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'
]
Quelle est la meilleure pratique pour cela?