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