Ad esempio, ho entità: Client, Report. Il cliente può avere molti report e penso che l'endpoint per una singola gestione di Report debba essere annidato in questo modo:
/clients/{client_id}/reports/{report_id}
Come per tutti i report di un client, l'enpoint è previsto:
/clients/{client_id}/reports
Ma come dovrebbe sembrare un endpoint per ottenere tutti i report di tutti i client per mantenere l'API coerente e ben progettata.
I miei approcci:
- (l'ho visto in alcuni google api) usa "-" al posto di esso e lo analizzo come "tutto":
/clients/-/reports
Questo mantiene il formato dell'endpoint allo stesso modo, ma sembra un po 'insolito, non riesce a trovare alcun rfc che suggerisca in questo modo.
- Crea un endpoint separato solo per tutti i rapporti:
/reports
Ma per ottenere i rapporti del cliente è ancora:
/clients/{client_id}/reports
- Endpoint di refactoring per rendere "client" non un genitore, ma solo un parametro di filtro:
/reports?client={client_id}
- rapporti di un cliente
/reports
- rapporti di tutti i client
In caso di aggiunta di un nuovo endpoint per la pubblicazione di un report per un client specifico, potrebbe sembrare brutto, perché sarà una richiesta POST con un parametro nell'URL.
Ci sono altri suggerimenti di idee?