Par exemple, j'ai des entités: Client, Rapport. Le client peut avoir de nombreux rapports et je pense que le point de terminaison d'une seule gestion de rapport devrait être imbriqué comme ceci:
/clients/{client_id}/reports/{report_id}
Comme pour tous les rapports d'un client, le point final est attendu:
/clients/{client_id}/reports
Mais à quoi devrait ressembler un point de terminaison pour obtenir tous les rapports de tous les clients pour garder l'API cohérente et bien conçue.
Mes approches:
- (Je l'ai vu dans certaines API Google) utilisez "-" à la place et analysez-le comme "tous":
/clients/-/reports
Cela garde le format du point de terminaison le même, mais semble un peu inhabituel, ne peut trouver aucun rfc qui suggère cette façon.
- Créez un point de terminaison distinct uniquement pour tous les rapports:
/reports
Mais pour obtenir les rapports du client, c'est toujours:
/clients/{client_id}/reports
- Refactoriser les points de terminaison pour faire du "client" non un parent, mais juste un paramètre de filtre:
/reports?client={client_id}
- rapports d'un client
/reports
- rapports de tous les clients
En cas d'ajout d'un nouveau point de terminaison pour publier un rapport pour un client spécifique, il peut sembler laid, car il s'agira d'une demande POST avec un paramètre dans l'URL.
Y a-t-il d'autres suggestions d'idées?