Versiones comparadas

Clave

  • Se ha añadido esta línea.
  • Se ha eliminado esta línea.
  • El formato se ha cambiado.

Tabla de contenidos

...

Creación del proyecto

Videolink
Resolucion480p
VIDEOID143772

...

Con esto tendremos el proyecto creado, con la clase NombreproyectoApplication.java (nombre de proyecto correspondiente), que será la que inicie la ejecución de la aplicación. Una vez tengamos el proyecto creado, podemos pasar a añadir la configuración necesaria.

Estructura de los proyectos Spring Boot

La estructuración de la capa backend será similar a la indicada para las aplicaciones Fundeweb basadas en JSF ya que la filosofía sobre cómo gestionar la lógica de negocio y obtención de datos es la misma. No obstante nuestros backends estarán basados en SpringBoot y no tendrán incorporada la capa Frontend por lo que hay que ajustar las peculiaridades del cambio de tecnología.

...

Basándonos en el esquema anterior nuestra aplicación debe constar de tres capas:

Controladores Rest

Será la clase o clases que expongan la API Rest por lo que establecerán el punto de interconexión entre backend y frontend. Está desacoplada del fontend por lo que las APIs expuestas podrán ser consultada desde cualquier aplicación o navegador lo que hace primordial asegurar la autenticación y autorización de los puntos de interacción de las partes privadas. También debe asegurar que la parte pública no permite acceder a información diferente de la propuesta o a partes privadas.

...

  • Todas los controladores que expongan APIs rest deberán estar dentro del paquete de servicios rest (paquetes con sufijo rest): "es.um.atica.xxx.xxx.rest".
  • Proveer los endpoints para que los diferentes servicios accedan a nuestro backend.
  • Dividir los endpoints entre públicos y privados: Para ello los endpoints públicos deberán ir en el path ".../public/..." y los privados en ".../private/..." 
  • Controlar el acceso a los diferentes endpoints privados tanto a nivel de autenticación como de autorización.
  • Estará anotada con @RestController 
  • Deberá indicar el path donde este controlador escucha: @RequestMapping(value = "/public/....")
    • Varios manejadores podrán mapear la ruta raiz indicada en @RequestMapping, pero lo recomendable es que cada manejador gestione un contexto /public/alumnos, /public/pdi, etc.
  • En las respuestas a las peticiones deberá usar los códigos HTTP para indicar el estado devolviendo 200 sólo si la respuesta es correcta, en caso de errores controlados se deberá hacer uso de los códigos 400
  • Deberán tratar las excepciones producidas para dar una respuesta coherente a la parte cliente.

Servicios

Será la clase o clases que gestionan la lógica de negocio gestionarán la obtención de datos bien desde base de datos haciendo uso de los @Repository pertinentes o de clientes Rest / SOAP, coordinarán el flujo de ejecución del código y deberán controlar posibles problemas y situaciones inesperadas para dar una respuesta controlada al cliente que ha invocado a este servicio.

...

  • Interfaz: MiInterfaz
  • Implementación: MiInterfazImpl

Repository, PAO, Entity, DTO, MODEL

Esta capa será la encargada de dar acceso a los datos de la aplicación almacenados en base de datos o modelar los objetos del sistema que no tienen correspondencia directa con el modelo de base de datos.

...

  • Repository: Serán los repositorios que accederán a la base de datos se deberán alojar en "es.um.atica.xxx.xxx.repository"
  • PAO/DAO: Serán los encargados de llamar a paquetes/prodecimientos de base de datos, deberán estar en "es.um.atica.xxx.xxx.pao/dao"
  • Entity: Clases Java que mapean en entidades "es.um.atica.xxx.xxx.entity"

  • DTO/MODEL: DTO Clases java que mapean entidades a tipos más simples de cara a devolver en los servicios REST "es.um.atica.xxx.xxx.dto". MODEL Clases Java que se usan en la aplicación como modelo de datos pero que no equivalen a entidades  "es.um.atica.xxx.xxx.dto"

Excepciones 

Ver Manejo de errores en aplicaciones REST Fundeweb