Ovviamente un'API RESTful potrebbe contenere percorsi di base come:
api/competitions
api/competitions/{id}
api/teams
api/teams/{id}
api/players
api/players/{id}
E percorsi nidificati come:
api/competitions/{id}/teams
api/competitions/{id}/teams/{id}/players
api/teams/{id}/players
...
Ma per quanto riguarda il seguente esempio ( Percorso A ):
api/competitions/{id}/teams/players
Quindi tutti i giocatori, per tutte le squadre che si trovano in una certa competizione?
Q1: questo contrasta la progettazione REST?
Q2: Presumibilmente lo fa, ma c'è qualche documentazione che lo afferma esplicitamente? Ho fatto qualche ricerca e non riesco a trovare nulla che lo escluda dal momento che gli esempi sono tutti molto semplicistici.
Potresti implementare ( Percorso B ):
api/competitions/{id}/players
invece, e quindi sotto la logica assicurerebbe che i giocatori non siano TUTTI i giocatori (come in api/players
) ma considerino la squadra e quindi la competizione - in modo che i giocatori che non hanno una squadra siano esclusi.
Tuttavia, passando da questo semplice esempio a un modello più astratto, potrebbero esserci degli scenari in cui Percorso B potrebbe essere più confuso per un utente API di Percorso A .
Q3: Ci sarebbe mai una giustificazione per l'implementazione di una route nidificata (come Route A ) senza tutti gli identificatori a tutti i livelli?