Skip to content

agusconde18/API-Disney

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Tabla de Contenidos

  1. Sobre El Proyecto
  2. Construido con
  3. Comenzando
  4. Uso
  5. Despliegue
  6. Autores
  7. Contribuyendo

Sobre El Proyecto 📖

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

(back to top)

Construido con 🛠️

Aplicamos las siguientes tecnologías para construir el proyecto.

(back to top)

Comenzando 🚀

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.

Prerequisitos 📋

  • Tener java 11 (como minimo) configurado
      <properties>
        <java.version>11</java.version>
      </properties>
  • Tener maven configurado

Instalacion 🔧

  1. Clona el repositorio

    git clone https://github.com/agusconde18/API-Disney.git
  2. Abre el proyecto con IntelliJ IDEA

  3. 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>
  4. Agrega las siguientes configuraciones a application.properties

    spring.datasource.url=jdbc:mysql:
    spring.datasource.username=bbvajatest
    spring.datasource.password=bbvajatest
  5. Compila el proyecto (puede demorar un poco la primera vez). Recomendamos usar la herramienta Postman para probar las requests a la API.

(back to top)

Uso ⚙️

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

Authentication Response

{
    "id": 1,
    "username": "julia",
    "email": "[email protected]",
    "roles": [
        "ROLE_ADMIN"
    ],
    "accessToken": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqdWxpYSIsImlhdCI6MTY1NDUzMDA3OSwiZXhwIjoxNjU0NjE2NDc5fQ.B2fEH90zsuEk5WVST-H4N3qm0ycrW1bb8CSvkZgFt7rojBV3XRVV9X2Lm6etmcJBNi1YNpCt57GcPsv-B6F25A",
    "tokenType": "Bearer"
}

Film Response in List

{
  id: 1,
  title: "La obra maestra de mi vida",
  releaseDate: "1998-07-12T00:00:00.000 00:00",
  coverImage: "posterMaestro.png"
}

Film Response with id

{
  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"
  }
}

Character Response in List

{
  id: 1,
  name: "Cheesy",
  image: "cheesy.png"
}

Character Response with id

{
  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"
      }
    }
  ]
}

Genres Response

{
  id: 1,
  name: "aventuras"
}

Generic Error Response

{
    "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"
    ]
}

(back to top)

Despliegue 📦

El proyecto fue desplegado a través de Heroku

Link del proyecto: https://bbva-testja.herokuapp.com/

(back to top)

Autores ✒️

(back to top)

Contribuyendo 🤝

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!

  1. Haz una rama del Proyecto
  2. Crea una rama Feature (git checkout -b feature/AmazingFeature)
  3. Haz commit de tus cambios (git commit -m 'Add some AmazingFeature')
  4. Haz push de tu rama (git push origin feature/AmazingFeature)
  5. Abre una Pull Request

(back to top)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages