Nombre: Hernán Olmos Lenguaje: Java Herramientas utilizadas:
- Spring-boot
- Spring Security
- Spring JPA
- Spring Hibernate
- Spring Mail
- MySql
- Swagger
- Clonar el repositorio en una carpeta.
abrir gitbash
ingresar el comando git clone https://github.com/her-o/Disney-API.git
- Iniciar el proyecto.* a. Abrirlo con un IDE y ejecutarlo como una aplicación Spring. b. Abrir desde la consola: Dentro de la carpeta del proyecto ingresar el siguiente comando:
mvn spring-boot:run
*El programa utiliza un gestor de base de datos sql, por lo que será necesario conectarlo o cambiar la fuente de base de datos dentro src>main>resources>application.properties.
-
Una vez inicializado el programa evaluará si existe una base de datos con el nombre "disney_api_alkemychallenge".
-
Uso de la interfaz grafica de Swagger. Ingresar en la siguiente URL:
localhost:8082/swagger-ui/index.html
Si puerto esté ocupado, cambiarlo dentro de src>main>resources>application.properties>server.port
Para acceder a los endpoints de la aplicación es necesario autenticarse. Dentro de la interfaz de Swagger, seguir los siguentes pasos:
- Ingresar dentro de AUTHENTICATION.
- Ingresar dentro del método POST register y clickear en Try it out.
- Ingresar un email personal y una constraseña. -En caso de que la data ingresada sea valida se creara un nuevo usuario en la base de datos con los datos ingresados (el password estará encriptado por un password encoder). Luego recibirá un email de bienvenida a la casilla del correo ingresado, enviado desde Gmail utilizando la librería Spring Mail.
- Dirigirseal método POST login y volver a ingresar los datos previamente entregados al servidor.
- Si el usuario está registrado en la base de datos recibirá un token JWT dentro de la respuesta de método.
- Copiar el token sin las comillas y dentro de la casilla "Authorize" arriba a la derecha, ingresar el texto "Bearer" seguido de un espacio y el token.
La seguridad del servidor (Spring Security) evaluará este token cada vez que se haga un pedido a la base de datos para confirmar la identidad del usuario. En caso de ingresar un token incorrecto los métodos deberán devolver un error 401 (usuario no autorizado).
Dentro del API encontrará tres controladores, cada uno con cuatro métodos que se corresponden con las operaciones CRUD (create, read, update and delete).
Este controlador está encargado de gestionar los datos que tengan que ver con los personajes.
-
Método POST Ingresar los datos que serán guardados en un DTO(Data Transfer Object) para luego convertirlos en un objeto de tipo "Character" y guardarlo en la base de datos.
name: Obligatorio. En este campo se ingresa el nombre de personaje. Dicho campo está configurado como una columna única dentro del diseño de la base de datos. Eso quiere decir que no podrán guardarse dos personajes con el mismo nombre.
movies: Opcional. En el caso de este campo registrará la base de datos para evaluar si las películas ingresadas existen, en caso contrario creará las respectivas instancias en la base de datos, las cuales tendrán todos sus campos nulos, salvo el nombre.
imageUrl: Opcional. URL de la imagen del personaje que será consumida luego por el cliente.
background : Opcional. Texto sobre la historia del personaje.
age: Opcional. Edad del personaje.
weight: Opcional. Peso del personaje.
-
Método GET Se devuelve un JSON con los datos de los personajes guardados en la base de datos. A este método se pueden pasar parametros para filtrar tales busquedas por nombre, edad o películas en las que aparecen. No es posible ingresar mas de un críterio de busqueda a la vez. En caso de no especificarse ninguno se devolverán todos los personajes que se encuentren en la base de datos.
Para devolver los resultados se utiliza un DTO que separa el nombre y la imagen del personaje de sus detalles (edad, peso, historia y películas).
-
Método PUT Se actualiza un personaje en partícular con información nueva. Este método es muy similar al POST. Todos los campos son opcionales salvo el nombre del personaje modificado y el ID del personaje que se quiera modificar. Atención: En caso de no completar ciertos campos se actualizarán como nulos, pudiendo perder así información sobre el personaje.
-
Método DELETE Borra un personaje de la base de datos en base a su ID.
Este controlador está encargado de gestionar los datos que tengan que ver con las películas.
-
Método POST Ingresar los datos que serán guardados en un DTO (Data Transfer Object) para luego convertirlos en un objeto de tipo "Movie" y guardarlo en la base de datos.
name: Obligatorio. En este campo se ingresa el nombre de la película. Dicho campo está configurado como una columna única dentro del diseño de la base de datos. Eso quiere decir que no podrán guardarse dos películas con el mismo nombre.
characters: Opcional. En el caso de este campo registrará la base de datos para evaluar si los personajes ingresados existen, en caso contrario creará las respectivas instancias en la base de datos, las cuales tendrán todos sus campos nulos, salvo el nombre.
genres: Opcional. En el caso de este campo registrará la base de datos para evaluar si los géneros ingresados existen, en caso contrario creará las respectivas instancias en la base de datos, las cuales tendrán todos sus campos nulos, salvo el nombre.
imageUrl: Opcional. URL de la imagen de la película que será consumida luego por el cliente.
rating :Opcional. Evaluación de la película en base a un críterio de 5 opciones.
release date: Opcional. Fecha de estreno de la película.
-
Método GET Se devuelve un JSON con los datos de las películas guardadas en la base de datos. A este método se pueden pasar parametros para filtrar tales busquedas por nombre, género o alterar el orden en el que aparecen en la lista. No es posible ingresar mas de un críterio de busqueda a la vez. En caso de no especificarse ninguno se devolverán todos las películas que se encuentren en la base de datos.
Para devolver los resultados utilizo otro DTO que separa el nombre y la imagen del personaje de sus detalles (edad, peso, historia y películas).
-
Método PUT Se actualiza una película en partícular con información nueva. Este método es muy similar al POST. Todos los campos son opcionales salvo el nombre de la película modificada y el ID de la película que se quiera modificar. Atención: En caso de no completar ciertos campos se actualizarán como nulos, pudiendo perder así información sobre la película.
-
Método DELETE: Borra una película de la base de datos en base a su ID.
Este controlador está encargado de gestionar los datos que tengan que ver con los géneros.
- Método POST Ingresar los datos que serán guardados en un DTO (Data Transfer Object) para luego convertirlos en un objeto de tipo "Genre" y guardarlo en la base de datos.
name: Obligatorio. En este campo se ingresa el nombre del género. Dicho campo está configurado como una columna única dentro del diseño de la base de datos. Eso quiere decir que no podrán guardarse dos géneros con el mismo nombre. n la base de datos, las cuales tendrán todos sus campos nulos, salvo el nombre.
imageUrl: Opcional. URL de la imagen representativa del género que será consumida luego por el cliente.
- Método GET Se devuelve un JSON con los datos de los géneros guardados en la base de datos. A este método se pueden pasar parametros para filtrar tales busquedas según el ID del género. En caso de no pasarse ningún parametro, se devolverá una lista con todos los géneros.
Para devolver los resultados utilizo otro DTO que devuelve el nombre, la imagen y las películas de la base de datos que pertenezcan a dicho genero.
-
Método PUT Se actualiza un género en partícular con información nueva. Este método es muy similar al POST. Todos los campos son opcionales salvo el nombre del género modificado y el ID del género que se quiera modificar. Atención: En caso de no completar ciertos campos se actualizarán como nulos, pudiendo perder así información sobre el género.
-
Método DELETE Borra un género de la base de datos en base a su ID.