Tengo caso de uso donde un grupo de estudiantes se divide en equipos. clase tiene un classId y el equipo tiene un teamId.
Tengo las siguientes opciones:
Crear 2 puntos finales:
@GET @Path("/schoolMetadata/byClass/{classId}") @Produces(MediaType.APPLICATION_JSON) public Response getMetadataByClassId(
y
@GET
@Path("/schoolMetadata/byTeam/{teamId}")
@Produces(MediaType.APPLICATION_JSON)
public Response getMetadataByTeamId(
Segunda aplicación sería el uso de parámetro de consulta.
@GET @Path("/schoolMetadata/by/") @Produces(MediaType.APPLICATION_JSON) public Response getMetadataById( @QueryParam("classId") final Id classId @QueryParam("teamId") final Id groupId) { if (classid != null) { } else { } }
¿Cuál de los 2 enfoques es mejor?
La idea detrás de URLs REST es que deben representar a 'recursos' que son sustantivos en singular o plural. Recursos que representan una 'recogida' de que las cosas deben ser plural. Ha indicado que los metadatos de la escuela se puede obtener ya sea para un ID de clase o un identificador de equipo. Suena como clases y equipos podría ser considerado como 'recursos', independientemente de que se modelan tanto internamente como un 'schoolMetadata'. Sin ninguna otra información, que podría sugerir algo así como:
- clases / {} classId
- equipos / {} teamId
Si está utilizando jaxrs, sería natural para terminar con las direcciones URL que ver algo un poco más a esto:
- schoolMetadata / recursos / clases / {} classId
- schoolMetadata / recursos / equipos / {} teamid
También puede ser que desee implementar:
- schoolMetadata / recursos / clases para producir una lista de 'clases'. Parámetros de consulta podría ser utilizado aquí para facilitar las opciones de búsqueda.
- schoolMetadata / recursos / equipos para producir una lista de 'equipos'. . .