Diseño API REST requerimientos - Uniandes-ISIS2603-backup/201620-g5 GitHub Wiki

###Implementación de los Servicios REST para los requerimientos R1, R14 y R15 de la aplicación Biblioteca del grupo de trabajo “G5”

Implementado por Santiago Múnera Dávila - [email protected]

A continuación se presenta el api respectivo para los requerimientos funcionales R1, R14 y R15:

R1: Crear una sala para una biblioteca

Método Path Acción Parámetros Cuerpo Retorno
POST /bibliotecas/salas Crear una nueva instancia de la entidad Sala(CREATE) @PathParam idBiblioteca:Identificador del registro de biblioteca Atributos de la instancia de Sala a crear Instancia de Sala creada, incluyendo su nuevo ID. Objeto JSON de Sala.

La clase SalaResource tendrá entonces el siguiente método que cumple el requerimiento:

Anotación Método Descripción
@POST SalaDTO createSala(SalaDTO sala, int idBiblioteca) Crea una sala con la información suministrada por parámetro. A la sala creada se le asocia una biblioteca respectiva que se identifica por su id.

R14: Regresar un libro

Método Path Acción Parámetros Cuerpo Retorno
PUT /prestamos/:id/usuarios/:idUsuario/fecha Actualiza una instancia de la entidad City (UPDATE) que tiene identificado idUsuario, idPrestamo y fecha **@PathParam idUsuario:**Identificador del registro de usuario. **@PathParam id:**Identificador del registro de prestamo. @PathParam fechaEntrega: fecha en formato "dd-MMM-yyyy" Ej: "30-Dic-2000". Objeto JSON de Prestamo Atributos de la instancia de Prestamo. Objeto JSON de Prestamo

La clase PrestamoResource tendrá entonces el siguiente método que cumple el requerimiento R14:

Anotación Método Descripción
@PUT PrestamoDTO regresarLibro(long id, PrestamoDTO m, long idUsuario) Actualiza la información de prestamo identificado con idUsuario, id y se compara con fechaEntrega. El prestamo cambia su atributo de estaActivo a false para terminar el prestamo (así se regresa el libro) y retorna el prestamo finalizado. Adicionalmente, si el parámetro fechaEntrega se compara con el atributo fechaFinal de Prestamo y fechaEntrega es después de fechaFinal, se crea una multa(ver RF15) asociada al idUsuario del que realizó la devolución del libro.

R15: Crear una multa para un usuario

Método Path Acción Parámetros Cuerpo Retorno
POST /usuarios/multas Crear una nueva instancia de la entidad Multa(CREATE) @PathParam idUsuario:Identificador del registro de usuario Atributos de la instancia de Multa a crear Instancia de Multa creada, incluyendo su nuevo ID. Objeto JSON de Multa.

La clase MultaResource tendrá entonces el siguiente método que cumple el requerimiento R15:

Anotación Método Descripción
@POST MultaDTO createMulta(MultaDTO multa, int idUsuario) Crea una multa con la información suministrada por parámetro. A la multa creada se le asocia un usuario respectivo que se identifica por id.

###Requerimientos 11,12 y 13 Santiago Rojas Herrera - [email protected]

Requ. Método Path Acción Parámetros Cuerpo Retorno
[R11](R11_Ver reservas activas de un libro particular) GET /libros/:idLibro/reservas Retorna las reservas del libro con tal id (read) @PathParam idLibro:Identificador del libro Objetos JSON de todas las reservas del libro.
[R12](R12_Ver prestamos activos de un libro particular) GET /libros/:idLibro/prestamos Retorna los prestamos activos del libro con tal id(read) @PathParam idLibro: Identificador del libro Objetos JSON de todas los prestamos activos del libro.
[R13](R13_Ver disponibilidad sala dada una fecha) GET salas/:idSala/:fecha Retorna las salas disponibles con los parametros definidos en el cuerpo(read) @PathParam idSala: id de la sala que se desea consultar @PathParam fecha: fecha en milisegundos JSON con la sala si esta disponible, vacio de lo contrario.
Requ. Clase Anotación Método Descripción
[R11](R11_Ver reservas activas de un libro particular) ReservaResource @GET List<ReservaDTO> getReservasLibro(Long id) Devuelve una lista de las reservas activas del libro
[R12](R12_Ver prestamos activos de un libro particular) PrestamoResource @GET List<PrestamoDTO> getPrestamosLibro(Long id) Devuelve una lista de los prestamos activos del libro
[R13](R13_Ver disponibilidad sala dada una fecha) SalaResource @GET SalaDTO getDisponibilidadSala(Long id, Long fecha) Devuelve la sala si esta disponible en la fecha dada por parametro

###Implementación de los Servicios REST para el recurso “Blogs” de la aplicación Biblioteca del grupo de trabajo “G5”

BLOG

Implementado por Juan Sebastian Prieto - [email protected]

Método Path Acción Parámetros Cuerpo Retorno
GET libros/:idLibro/blogs Despliega una lista de los blogs en la base de datos(READ) Colección de registros de blogs
GET libros/:idLibro/blogs/:id Obtiene los atributos de una instancia de blogs(READ) que tiene identificacion id @PathParam id:Identificador del registro Atributos de la instancia del blog
POST libros/:idLibro/blogs Crea una nueva instancia del recurso blogs(CREATE) Atributos de la instancia de blogs a crear Instancia de blogs creada
PUT libros/:idLibro/blogs/:id Actualiza una instancia de la entidad blogs(UPDATE) @PathParam id:Identificador del registro Objeto Json de blogs Instancia de blogs actualizada

Métodos clase BlogResource:

Método Descripción
List<blogDTO> getblogs() Retorna la lista de blogs
BlogDTO createBlog() Crea un blog nuevo con la información suministrada por parámetro. Retorna el nuevo blog.
BlogDTO getBlog(int id) Retorna el blog identificado con id
BlogDTO updateBlog(int id, BlogDTO blog) Cambia los atributos del blog con id

###Requerimientos 8,9 y 10 Carlos González - [email protected]

Requ. Método Path Acción Parámetros Cuerpo Retorno
[R8](R8_Prestar una sala) POST /bibliotecas/:idBiblioteca/prestamos/idPrestamo Crea un nuevo préstamo de una sala (create) @PathParam " " * Objetos JSON del préstamo de sala creado.
[R9](R9_Prestar un libro) POST /bibliotecas/:idBiblioteca/prestamos/idPrestamo Crea un nuevo préstamo de un libro(create) @PathParam " " * Objetos JSON del préstamo de libro creado.
[R10](R10_Prestar un video) POST /bibliotecas/:idBiblioteca/prestamos/idPrestamo Crea un nuevo préstamo de una video(create) @PathParam " " * Objetos JSON del préstamo de video creado.

*Se deja vacío para manejar la ruta /bibliotecas/ al principio del path (no poner body ayuda a la flexibilidad si se quiere customizar mucho los paths, se necesita que el path empiece por biblioteca y por usuarios por lo que no se pone body).

Métodos clase prestamoResource: La clase prestamoResource va a tener un solo método que crea el préstamo, y dependiendo del tipo de recurso que sea el préstamo se llama a la clase correspondiente.

Requ. Anotación Método Descripción
[R8](R8_Prestar una sala en particular) @POST PrestamoDTO createPrestamoBiblioteca(Long idBiblioteca) Crea el prestamo nuevo, asociando la sala al usuario. Devuelve el préstamo nuevo
[R9](R9_Prestar un libro en particular) @POST PrestamoDTO createPrestamoBiblioteca(Long idBiblioteca) Crea el prestamo nuevo, asociando el libro al usuario. Devuelve el préstamo nuevo
[R10](R10_Prestar un video en particular) @POST PrestamoDTO createPrestamoBiblioteca(Long idBiblioteca) Crea el prestamo nuevo, asociando el video al usuario. Devuelve el préstamo nuevo.

Requirimientos 2, 3 y 4

** David Patiño [email protected]

Requ. Método Path Acción Parámetros Cuerpo Retorno
[R2](R2_Reservar una sala) POST /bibliotecas/:idBiblioteca/reservas Crea una nueva reserva de una sala (create) @PathParam " " * Objetos JSON del préstamo de sala creado.
[R3](R4_Reservar un libro) POST /bibliotecas/:idBiblioteca/reservas Crea un nueva reserva de un libro(create) @PathParam " " * Objetos JSON del préstamo de libro creado.
[R4](R4_Reservar un video) POST /bibliotecas/:idBiblioteca/reservas Crea un nueva reserva de un video(create) @PathParam " " * Objetos JSON del préstamo de video creado.