Skip to content

LanyuEStudio/Datos-Deportivos-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Crea tu API (Datos Deportivos API)

Este repositorio sirve para realizar el código del curso "Crea tu API"

Contenido

Se generó un proyecto gradle usando Spring Initialzr con la siguiente configuración:

  • Project: Gradle
  • Language: Java
  • Group: es.lanyu
  • Artifact: datosdeportivosapi
  • Dependencies: Spring Data JPA, H2 Database, PostgreSQL Driver, Rest Repositories
  • Resto de las opciones por defecto Se puede disponer de toda esta configuración usando la configuración compartida. Para descargar el proyecto usar el botón Generate - Ctrl + ENTER.

Spring Contenedor Dependencias (Spring básico)

Ejemplo de las distintas formas de inyectar dependencias sin usar SpringBoot.

Después se siguieron los siguiente pasos:

  1. Creación de bean por XML

  2. Escaneando componentes con anotaciones @Component

  3. Sobreescribiendo @Component con XML

    • Se puede invertir el orden de los ficheros y ver los cambios en el log
  4. Cambiando paquete base para escanear

    • Ya no se sobreescribe. No detecta fuera del paquete base
  5. Desambiguar varias beans por identificador

  6. @Bean en @Configuration

    • Ver cómo se crean todas las dependencias de las tres formas
  7. Refactorizar a Spring Boot

  8. Propiedades y @Value

  9. Logs

  10. Inyección de Dependencias: @Autowired

El código hasta este punto está etiquetado en la release v0.0.1.

Pasando a supuesto de Datos Deportivos

A continuación de lo anterior se borra todo el código de ejemplo de Spring básico y se añade la dependencia datos-deportivos para continuar con persistencia con JPA, Spring Data REST para ofrecer una API RESTful HATEOAS, formateo de salida con Jackson y Entity Listener. Se ven distintos ejemplos en la forma de hacerlo (XML, Configuración Java y Anotaciones).

Para continuar desde aquí hay que hacer clone de este repositorio y situarse en el commit correspondiente a la release v0.0.2. También hay que hacer clone a la misma carpeta de datos-deportivos porque es multiproyecto y seguramente se toquen cosas de ese proyecto para comparar resultados. Una vez se tiene eso se ejecuta la tarea bootRun desde este proyecto para ver que todas las dependencias se han resuelto. Finalmente se prueba desde el IDE que se use que detecta los tipos del proyecto datos-deportivos (por ejemplo se ve Partido, Participante, Gol, etc... uno cualquiera es suficiente).

Los puntos que se van a ver son:

  1. Entidades (POJO @Entity) y Repositorios (@Repository)
  2. ORM por XML(I)
    1. De POJO simple
    2. Con Herencia
    3. Con Relación
      1. @OneToMany
  3. Data REST (endpoints HATEOAS)
  4. Personalizar payload con Jackson
  5. ORM por XML (II)
    1. Herencia con varias subclases (SINGLE TABLE)
  6. Inyectar bean en objetos no gestionados
    1. En entidades leídas desde BD (Events y Listeners en JPA)
    2. En objetos desde las peticiones HTTP (@JsonComponent)
  7. Añadir código personalizado
    1. Personalizar endpoints con @RestResource
    2. Añadir método personalizado a repositorio
    3. Exponer método con @RepositoryRestController
    4. Añadir link a endpoint /search
    5. Ruta con @PathVariable
    6. Detección automática de links con ConfiguracionRest

Despliegue en local

Antes de arrancar la API se debe arrancar la BD. Se usa H2 en modo servidor. Se puede levantar la BD usando el archivo h2-version.jar. Comprobar que tenemos acceso a la consola de H2 y que está corriendo.

Las propiedades de conexión son las que vienen por defecto:

url=jdbc:h2:tcp://localhost/~/test
username=sa
(sin password)

Entonces ejecutar la API con la última release.

Mejor desde una consola para ver el log java -jar datosdeportivosapi-VERSION.jar.

Para conseguir este .jar lo mejor es seguir los pasos indicados en el blog.

Puedes ver la documentación de la API en Postman y usar el deploy en Heroku para probarlo directamente. Para Heroku tener en cuenta que:

  1. El servicio hiberna despúes 30 minutos sin usar y tardará un poco más en la primera petición
  2. Usar el environment Heroku de Postman

Run in Postman