Stellen Sie sich vor, Sie haben zwei Entitäten, Spieler y Team , bei dem die Spieler in mehreren Teams spielen können. In meinem Datenmodell habe ich eine Tabelle für jede Entität und eine Verknüpfungstabelle zur Pflege der Beziehungen. Winterschlaf kann dies gut handhaben, aber wie kann ich diese Beziehung in einer RESTful API?
Ich kann mir mehrere Möglichkeiten vorstellen. Erstens könnte jede Entität eine Liste der anderen enthalten, so dass ein Spieler-Objekt eine Liste der Mannschaften hätte, zu denen es gehört, und jedes Mannschafts-Objekt hätte eine Liste der Spieler, die zu ihm gehören. Um also einen Spieler zu einer Mannschaft hinzuzufügen, müsste man nur POST die Darstellung des Spielers an einen Endpunkt, z. B. POST /player
oder POST /team
mit dem entsprechenden Objekt als Nutzlast der Anfrage. Dies scheint mir die "RESTful", aber fühlt sich ein wenig seltsam.
/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'
}
Die andere Möglichkeit, die mir dazu einfällt, wäre, die Beziehung als eigenständige Ressource auszuweisen. Um also eine Liste aller Spieler einer bestimmten Mannschaft zu sehen, könnte man einen GET /playerteam/team/{id}
oder etwas Ähnliches und erhalten eine Liste der PlayerTeam-Entitäten zurück. Um einen Spieler zu einem Team hinzuzufügen, POST /playerteam
mit einer entsprechend erstellten PlayerTeam-Entität als Nutzlast.
/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'
]
Was ist das beste Verfahren dafür?