Zum Beispiel habe ich Entitäten: Client, Bericht. Der Client verfügt möglicherweise über viele Berichte, und ich denke, der Endpunkt für eine einzelne Berichtsverwaltung sollte wie folgt verschachtelt sein:
/clients/{client_id}/reports/{report_id}
Wie für alle Berichte eines Clients wird der Enpoint erwartet:
/clients/{client_id}/reports
Aber wie sollte ein Endpunkt aussehen, um alle Berichte aller Clients zu erhalten, damit die API konsistent und gut gestaltet bleibt?
Meine Ansätze:
- (Ich habe es in einer Google-API gesehen) Verwenden Sie stattdessen "-" und analysieren Sie es als "alle":
/clients/-/reports
Dadurch wird das Endpunktformat beibehalten, es sieht jedoch etwas ungewöhnlich aus. Es kann kein RFC gefunden werden, das dies vorschlägt.
- Erstellen Sie einen separaten Endpunkt nur für alle Berichte:
/reports
Aber um Kundenberichte zu erhalten, ist es immer noch:
/clients/{client_id}/reports
- Refactor-Endpunkte, um "Client" nicht zu einem übergeordneten Element, sondern nur zu einem Filterparameter zu machen:
/reports?client={client_id}
- Berichte eines Kunden
/reports
- Berichte aller Kunden
Wenn Sie einen neuen Endpunkt zum Posten eines Berichts für einen bestimmten Client hinzufügen, sieht dieser möglicherweise hässlich aus, da es sich um eine POST-Anforderung mit einem Parameter in der URL handelt.
Gibt es noch andere Ideenvorschläge?