¿Cuál es el diseño de la API de descanso correcta cuando tenemos un comportamiento opcional?

Jvdeveloper:

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:

  1. 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(
  1. 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?

Tom Drake:

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'. . .

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=191210&siteId=1
Recomendado
Clasificación