DELETE /books/{bookId}/authors/{authorId}

DELETE /books

Remueve un objeto author de la colección de autores en un objeto book

Parámetros

Nombre Ubicación Descripción Requerido Esquema
bookId Path ID del objeto book asociado al objeto author Integer
authorId Path ID del objeto author a remover Integer

Respuesta

Código Descripción Cuerpo
204 Objeto removido N/A
500 Error interno Mensaje de error

Implementación del servicio rest

Para implementar el servicio DELETE /books/{bookId}/authors/{authorId} 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("{bookId: \\d+}/authors/{authorId: \\d+}"), 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("{bookId: \\d+}/authors/{authorId: \\d+}")
    public void removeAuthors(@PathParam("bookId") Long bookId, @PathParam("authorId") Long authorId) {
        // 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("{bookId: \\d+}/authors/{authorId: \\d+}")
    public void removeAuthors(@PathParam("bookId") Long bookId, @PathParam("authorId") Long authorId) {
        bookLogic.removeAuthor(bookId, authorId);
    }

    //...
}

En el front-end, $http crea un promise para definir las tareas a ejecutar cuando se reciba una respuesta:

this.removeAuthor = function (index) {
    bookSvc.removeAuthor($scope.refId, $scope.records[ index ].id).then(function () {
        $scope.records.splice(index, 1);
    }, responseError);
};

results matching ""

    No results matching ""