Por ejemplo, tengo entidades: Cliente, Informe. El cliente puede tener muchos informes y creo que el punto final para una única administración de informes debe estar anidado de esta manera:
/clients/{client_id}/reports/{report_id}
En cuanto a todos los informes de un cliente, se espera el enpoint:
/clients/{client_id}/reports
Pero, ¿cómo debería ser un punto final para obtener todos los informes de todos los clientes para mantener la API consistente y bien diseñada?
Mis enfoques:
- (Lo vi en alguna API de Google) use "-" en lugar de él y analícelo como "todos":
/clients/-/reports
Esto mantiene el formato de punto final igual, pero parece un poco inusual, no puede encontrar ningún rfc que sugiera de esta manera.
- Cree un punto final separado solo para todos los informes:
/reports
Pero para obtener los informes del cliente todavía es:
/clients/{client_id}/reports
- Refactorizar puntos finales para hacer que "cliente" no sea un padre, sino solo un parámetro de filtro:
/reports?client={client_id} - informes de un cliente
/reports - informes de todo el cliente
En caso de agregar un nuevo punto final para publicar un informe para un cliente específico, puede parecer feo, porque será una solicitud POST con un parámetro en URL.
¿Hay alguna otra sugerencia de ideas?