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);
};