El proyecto esta creado para satisfacer a medida de las necesidades del cliente. El requerimiento era desarrollar una apliacion que le permita a niños y niñas hispanohablantes explorar el mundo de Disney. Para hacer esto nos solicitaron que mediante la aplicacion se pueda conocer y modificar a personajes y entender en que peliculas participaron.
Objetivo 🎯
- Utilizar Spring Boot.
- Las rutas deberán seguir el patrón REST.
- Utilizar la librería Spring Security.
Utilizamos el patron MVC para diseñar las entidades (modelos) y manejar la interaccion de las mismas con la capa de datos y controladores mediante DTOs (data transfer objects).
Testeo 🧰
- Mediante postman
Aplicamos las siguientes tecnologías para construir el proyecto.
Para poder levantar y compilar el proyecto localmente debes cumplir los siguientes requisitos y realizar las instalaciones pertinentes. A continuacion se encuentran los pasos para poder aprovechar las funcionalidades de la API.
- Tener java 11 (como minimo) configurado
<properties> <java.version>11</java.version> </properties>
- Tener maven configurado
-
Clona el repositorio
git clone https://github.com/agusconde18/API-Disney.git
-
Abre el proyecto con IntelliJ IDEA
-
Instala las dependencias de maven
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.sendgrid</groupId> <artifactId>sendgrid-java</artifactId> <version>4.7.4</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.5.3</version> </dependency> <dependency> <groupId>org.modelmapper</groupId> <artifactId>modelmapper</artifactId> <version>2.4.5</version> </dependency> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> <version>1.4.2.Final</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> </dependencies>
-
Agrega las siguientes configuraciones a
application.properties
spring.datasource.url=jdbc:mysql: spring.datasource.username=bbvajatest spring.datasource.password=bbvajatest
-
Compila el proyecto (puede demorar un poco la primera vez). Recomendamos usar la herramienta Postman para probar las requests a la API.
A continuacion se encuentran ejemplos de los casos de uso de los diferentes endpoints.
Metodos | Recurso | Endpoint | Respuesta | Requerimiento |
---|---|---|---|---|
GET | FILMS | /films | list of films |
|
POST | /films | posted film data |
title, rating, date, coverImage | |
PUT | /films/{id} | updated film data |
id in parameters | |
DELETE | /films/{id} | deleted film data |
id in parameters | |
GET | CHARACTERS | /characters | list of characters |
|
POST | /characters | posted character data |
name, age, image, weight, story | |
PUT | /characters/{id} | updated character data |
id in parameters | |
DELETE | /characters/{id} | deleted character data |
id in parameters | |
GET | GENRES | /genre | list of genres |
|
POST | /genre | posted genre data |
name | |
PUT | /genre/{id} | updated genre data |
id in parameters | |
POST | USER | /auth/signup | created user |
username, email, password, role (admin, user, mod) |
POST | USER | /auth/signin | user authentication token |
username, password |
{
"id": 1,
"username": "julia",
"email": "[email protected]",
"roles": [
"ROLE_ADMIN"
],
"accessToken": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqdWxpYSIsImlhdCI6MTY1NDUzMDA3OSwiZXhwIjoxNjU0NjE2NDc5fQ.B2fEH90zsuEk5WVST-H4N3qm0ycrW1bb8CSvkZgFt7rojBV3XRVV9X2Lm6etmcJBNi1YNpCt57GcPsv-B6F25A",
"tokenType": "Bearer"
}
{
id: 1,
title: "La obra maestra de mi vida",
releaseDate: "1998-07-12T00:00:00.000 00:00",
coverImage: "posterMaestro.png"
}
{
id: 1,
title: "La obra maestra de mi vida",
rating: 10,
releaseDate: "1998-07-12T00:00:00.000 00:00",
coverImage: "posterMaestro.png",
characters: [
{
id: 1,
name: "Cheesy",
age: 2,
image: "cheesy.png",
weight: 12,
story: "Perro callejero en busca de un dueño para toda la vida"
}
],
genre: {
id: 4,
name: "infantil"
}
}
{
id: 1,
name: "Cheesy",
image: "cheesy.png"
}
{
id: 1,
name: "Cheesy",
age: 2,
image: "cheesy.png",
weight: 12,
story: "Perro callejero en busca de un dueño para toda la vida",
actFilm: [
{
id: 1,
title: "La obra maestra de mi vida",
rating: 10,
releaseDate: "1998-07-12T00:00:00.000 00:00",
coverImage: "posterMaestro.png",
genre: {
id: 4,
name: "infantil"
}
}
]
}
{
id: 1,
name: "aventuras"
}
{
"status": "BAD_REQUEST",
"message": "Existe un problema con los datos enviados",
"errors": [
"El campo coverImage no puede ser nulo",
"El campo date no puede estar vacio",
"El campo title no puede ser nulo",
"El campo title no puede estar vacio",
"El campo date no puede ser nulo",
"El campo genre no puede ser nulo",
"El campo coverImage no puede estar vacio"
]
}
El proyecto fue desplegado a través de Heroku
Link del proyecto: https://bbva-testja.herokuapp.com/
- Agustin Conde - @agusconde18 - linkedin
- Julia Scodelari - @juliascode96 - linkedin
- Brian Ciszewski Alonso - @BrianCiszewski-bbva - linkedin
- Iara Baya Vargas - @iarabaya - linkedin
Cualquier contribucion y mejora al proyecto es muy apreciado por nosotros.
Si tienes alguna sugerencia que pueda mejorar este proyecto, por favor crea una rama del repositorio y un pull request. O simplemente abre un issue con la etiqueta "enhancement". Muchas gracias!
- Haz una rama del Proyecto
- Crea una rama Feature (
git checkout -b feature/AmazingFeature
) - Haz commit de tus cambios (
git commit -m 'Add some AmazingFeature'
) - Haz push de tu rama (
git push origin feature/AmazingFeature
) - Abre una Pull Request