Skip to content

API Rest en Java, desarrollando operaciones CRUD con MySQL, usando Flyway para migración de API, validaciones usando Bean Validation y fundamentos de Autenticación y Autorización

Notifications You must be signed in to change notification settings

gfCrova/SpringBoot-APIRest-ONE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

75 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Spring Boot API Rest ONE




Creación del proyecto

  • Crear un proyecto Spring Boot usando el sitio web Spring Initializr;
  • Importar el proyecto a IntelliJ y ejecutar una aplicación Spring Boot a través de la clase que contiene el método main;
  • Crear una clase Controller y mapear una URL en él usando las anotaciones @RestController y @RequestMapping;
  • Realizar una solicitud de prueba en el navegador accediendo a la URLmapeada en el Controller.

Request POST

  • Mapear solicitudes POST en una clase Controller;
  • Enviar solicitudes POST a la API usando Insomnia;
  • Enviar datos a la API en formato JSON;
  • Utilizar la anotación @RequestBody para recibir datos del cuerpo de la solicitud en un parámetro en el Controller;
  • Use el padrón DTO (Data Transfer Object), a través de Java Records, para representar los datos recibidos en una solicitud POST.

Spring Data JPA

  • Agregar nuevas dependencias en el proyecto;
  • Asignar una entidad JPA y crear una interfaz de Repositorio para ella;
  • Utilizar Flyway como herramienta de migración de proyectos;
  • Realice validaciones con Bean Validation usando algunas de sus anotaciones, como @NotBlank.

Request GET

  • Usar la anotación @GetMapping para mapear métodos en los Controllers que producen datos;
  • Usar la interfaz Pageable de Spring para realizar consultas con paginación;
  • Controlar la paginación y el ordenamiento de los datos devueltos por la API con los parámetros page, size y sort;
  • Configurar el proyecto para que los comandos SQL se visualicen en la consola.

Request PUT y DELETE

  • Mapear solicitudes PUT con la anotación @PutMapping;
  • Escribir un código para actualizar la información de un registro en la base de datos;
  • Mapear solicitudes DELETE con la anotación @DeleteMapping;
  • Mapear parámetros dinámicos en la URL con la anotación @PathVariable;
  • Implementar el concepto de exclusión lógica utilizando un atributo booleano.



Aplicando las mejores prácticas y proteger una API REST


Buenas Prácticas

  • Usar la clase ResponseEntity, de Spring, para personalizar los retornos de los métodos de una clase Controller;
  • Modificar el código HTTP devuelto en las respuestas de la API;
  • Agregar encabezados a las respuestas de la API;
  • Utilice los códigos HTTP más apropiados para cada operación realizada en la API.

Tratando Errores

  • Crear una clase para aislar el manejo de excepciones de API, utilizando la anotación @RestControllerAdvice;
  • Utilizar la anotación @ExceptionHandler, de Spring, para indicar qué excepción debe capturar un determinado método de la clase de manejo de errores;
  • Manejar errores 404 (Not Found) en la clase de manejo de errores;
  • Manejar errores 400 (Bad Request), para errores de validación de Bean Validation, en la clase de manejo de errores;
  • Simplificar el JSON devuelto por la API en casos de error de validación de Bean Validation.

Spring Security

  • Identificar cómo funciona el proceso de autenticación y autorización en una API Rest;
  • Agregar Spring Security al proyecto;
  • Cómo funciona el comportamiento padrón de Spring Security en una aplicación;
  • Implementar el proceso de autenticación en la API, de forma Stateless, utilizando clases y configuraciones de Spring Security.

JSON Web Token

  • Agregar la biblioteca Auth0 java-jwt como una dependencia del proyecto;
  • Utilizar esta biblioteca para generar un token en la API;
  • Inyectar una propiedad del archivo application.properties en una clase administrada por Spring, usando la anotación @Value;
  • Devolver un token generado en la API cuando un usuario se autentica.

Control de acceso

  • Los Filters funcionan en una solicitud;
  • Implementar un Filter creando una clase que herede de la clase OncePerRequestFilter de Spring;
  • Utilizar la biblioteca Auth0 java-jwt para validar los tokens recibidos en la API;
  • Realizar el proceso de autenticación de la solicitud, utilizando la clase SecurityContextHolder de Spring;
  • Liberar y restringir solicitudes, según la URL y el verbo del protocolo HTTP.

About

API Rest en Java, desarrollando operaciones CRUD con MySQL, usando Flyway para migración de API, validaciones usando Bean Validation y fundamentos de Autenticación y Autorización

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages