DELETE /books/{id}

Elimina un objeto Book.

Parámetros

Nombre Ubicación Descripción Requerido Esquema
id Path ID del objeto book a eliminar 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);
};

results matching ""

    No results matching ""