Paso 2: CRUD Editorial - Explicación del código
Para invocar el servicio construya la petición:
GET urlservidor/api/editorials/1
Donde urlservidor
en nuestros ejemplos corresponde:
localhost:8080/backstepbystep-web
El número 1 debe corresponder al id
de una editorial que existe. Si no existe debe enviar el mensaje de que la editorial con el id
dado no existe.
Persistencia
La clase EditorialPersistence
utiliza un objeto EntityManager (em)
para acceder a la base de datos. Este objeto debe estar anotado con el PersistenceContext
como se muestra en el siguiente código:
1) Algunos de los métodos de EditorialPersistence
pueden utilizar métodos predefinidos para hacer el llamado, como por ejemplo el método:
find(Class<T> entityClass, Object primaryKey)
Ver documentación aquí
Lógica
Las responsabilidades de la lógica consisten en verificar las reglas de negocio y si no se cumplen disparar BusinessLogicException
con el mensaje apropiado.
Si las reglas de negocio se cumplen la lógica debe invocar a los métodos de la capa de persistencia.
API REST
La siguiente figura muestra los métodos (servicios) HTTP que hemos definido en este paso en la clase EditorialResource
.
Cada método está anotado por uno de los verbos HTTP. EN el paso-1 vimos que el método create tiene la anotación @POST.
Verbo HTTP | PATH | Método en EditorialResource |
---|---|---|
@POST | editorials | createEditorial |
@GET | editorials | getEditorials |
@GET | editorials/{id} | getEditorial |
@DELETE | editorials/{id} | deleteEditorial |
@PUT | editorials/{id} | updateEditorial |
Todos los métodos que tienen id que representa el identificador del libro deben:
1) Declarar el parámetro que contiene el valor del id y anotarlo con @PATHPARAM:
La expresión {id: \d+} significa que en la url vendrá una cadena de 1 o más dígitos que llamaremos id y que declaramos como parámetro de tipo Long.
GET urlservidor/api/editorials/123
: invocamos el servicio para obtener la editorial cuyo identificador es 123
2) Verificar que efectivamente este recurso exista: