Immagina di avere 2 entità, Giocatore e Squadra , in cui i giocatori possono essere in più squadre. Nel mio modello di dati, ho una tabella per ogni entità e una tabella di join per mantenere le relazioni. Hibernate è bravo a gestirlo, ma come potrei esporre questa relazione in un'API RESTful?
Mi viene in mente un paio di modi. In primo luogo, potrei avere ciascuna entità contenente un elenco dell'altra, quindi un oggetto Giocatore avrebbe un elenco di Squadre a cui appartiene e ogni oggetto Squadra avrebbe un elenco di Giocatori che gli appartengono. Quindi per aggiungere un giocatore a una squadra, devi semplicemente POSTARE la rappresentazione del giocatore a un endpoint, qualcosa come POST /player
o POST /team
con l'oggetto appropriato come payload della richiesta. Questo mi sembra il più "RESTOSO" ma sembra un po 'strano.
/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'altro modo in cui mi viene in mente di fare questo sarebbe quello di esporre la relazione come una risorsa a sé stante. Quindi, per vedere un elenco di tutti i giocatori di una determinata squadra, potresti fare un GET /playerteam/team/{id}
o qualcosa del genere e recuperare un elenco di entità PlayerTeam. Per aggiungere un giocatore a una squadra, POST /playerteam
con un'entità PlayerTeam adeguatamente costruita come payload.
/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'
]
Qual è la migliore pratica per questo?