DELETE /books/{id}
Elimina un objeto Book.
Parámetros
Nombre | Ubicación | Descripción | Requerido | Esquema |
---|---|---|---|---|
id | Path | ID del objeto book a eliminar | Sí | Integer |
Respuesta
Código | Descripción | Cuerpo |
---|---|---|
204 | Objeto eliminado | N/A |
500 | Error interno | Mensaje de error |
Implementación del servicio rest
Para implementar el servicio DELETE /books/{id}
Una vez el front envía la petición, el servlet de JAX-RS la recibe. Basándose en la URL solicitada (api/books/{id}
) y en el método HTTP (DELETE
), JAX-RS busca una clase con la anotación @Path('books')
y que tenga un método con la anotación @DELETE
y @Path("{id}")
, el cual será ejecutado para responder a la solicitud.
@Path("books")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class BookResource {
@Inject
private IBookLogic bookLogic;
// ...
@DELETE
@Path("{id: \\d+}")
public void deleteBook(@PathParam("id") Long id) {
// Implementación
}
//...
}
Invocación de API de lógica
Inmediatamente se recibe la petición, el servicio de JAX-RS invoca a la capa lógica. Para esto, se inyectó una instancia de IBookLogic
, cuya inicialización es resuelta por el contenedor. La capa de lógica se encarga de eliminar el objeto de la base de datos.
@Path("books")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class BookResource {
@Inject
private IBookLogic bookLogic; // Inyección del bean de lógica
// ...
@DELETE
@Path("{id: \\d+}")
public void deleteBook(@PathParam("id") Long id) {
logger.log(Level.INFO, "Se ejecuta método deleteBook con id={0}", id);
bookLogic.deleteBook(id);
}
//...
}
En el front-end, $http
crea un promise para definir las tareas a ejecutar cuando se reciba una respuesta:
this.deleteRecord = function (record) {
return svc.deleteRecord(record.id).then(function () {
self.fetchRecords();
}, responseError);
};