GET /books/{bookId}/authors
Retorna una colección de objetos Author asociados a un objeto Book en representación Basic.
Parámetros
Nombre | Ubicación | Descripción | Requerido | Esquema |
---|---|---|---|---|
bookId | Path | ID del objeto book a consultar | Sí | Integer |
Respuesta
Código | Descripción | Cuerpo |
---|---|---|
200 | OK | Colección de objetos Author en representación Basic |
500 | Error consultando autores | Mensaje de error |
Implementación del servicio rest
Para implementar el servicio GET /books/{bookId}/authors
Una vez el front envía la petición, el servlet de JAX-RS la recibe. Basándose en la URL solicitada (api/books/{bookId}/authors
) y en el método HTTP (GET
), JAX-RS busca una clase con la anotación @Path('books')
y que tenga un método con la anotación @GET
y @Path("{bookId: \\d+}/authors")
, 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;
// ...
/**
* Obtiene una colección de objetos de AuthorDTO asociados a un objeto de Book
*
* @param bookId Identificador del objeto de Book
* @return Colección de objetos de AuthorDTO en representación basic
* @generated
*/
@GET
@Path("{bookId: \\d+}/authors")
public List<AuthorDTO> listAuthors(@PathParam("bookId") Long bookId) {
List<AuthorEntity> authors = bookLogic.getAuthors(bookId);
return AuthorConverter.listEntity2DTO(authors);
}
//...
}
El método listAuthors() retorna una lista de instancias de AuthorDTO.
En el front-end, $http
recibe la respuesta y la pone a disposición del promise como argumento. De esta manera el controlador puede usar los datos de la misma para ejecutar tareas de manera asíncrona.
bookSvc.getAuthors(args.id).then(function (response) {
$scope.records = response.data;
}, responseError);