30.11. Desarrollo de API REST con Spring Boot: validación de datos con validación de beans

Al desarrollar API REST con Spring Boot, uno de los pasos cruciales es garantizar que los datos recibidos por su aplicación sean correctos y válidos. Esto es fundamental para la integridad de los datos y la lógica empresarial de la aplicación. Spring Boot, junto con la especificación Bean Validation, proporciona un sólido conjunto de herramientas para validar objetos mediante declaración. En esta sección, exploraremos cómo implementar la validación de datos en una API REST con Spring Boot usando Bean Validation.

¿Qué es la validación de beans?

Bean Validation es una especificación de Java (JSR 380) que define un método para validar datos de forma estandarizada e independiente del marco. Hibernate Validator es la implementación de referencia de esta especificación y está integrado por defecto en Spring Boot, facilitando la validación de beans (objetos Java) mediante anotaciones.

Integración de la validación de Bean con Spring Boot

Para comenzar a usar Bean Validation con Spring Boot, generalmente no es necesario agregar ninguna dependencia adicional, ya que Spring Boot Starter ya incluye Hibernate Validator. Sin embargo, si necesita agregarlo manualmente, puede hacerlo en su archivo pom.xml (si usa Maven) o build.gradle (si usa Gradle).

Ejemplo de dependencia de Maven:

<dependencia>
    <groupId>org.springframework.boot</groupId>
    <artifactId>validación-de-arranque-spring-boot</artifactId>
</dependencia>

Ejemplo de dependencia de Gradle:

implementación 'org.springframework.boot:spring-boot-starter-validation'

Validar objetos con anotaciones

Con Bean Validation, puede utilizar anotaciones para especificar restricciones en los campos de objetos. Estas anotaciones se colocan directamente sobre los atributos de la clase que representa el objeto a validar. Algunas de las anotaciones más comunes incluyen:

  • @NotNull: el campo no puede ser nulo.
  • @Min y @Max: define el valor mínimo y máximo para un campo numérico.
  • @Size: especifica el tamaño mínimo y máximo para cadenas o colecciones.
  • @Email: valida que el campo contenga una dirección de correo electrónico válida.
  • @Pattern: Valida el campo con una expresión regular.

Ejemplo de Clase con Validaciones:

importar javax.validation.constraints.*;

clase pública UsuarioDTO {

    @NotNull(mensaje = "El nombre no puede ser nulo")
    @Size(min = 3, max = 50, mensaje = "El nombre debe tener entre 3 y 50 caracteres")
    nombre de cadena privada;

    @Email(mensaje = "Dirección de correo electrónico no válida")
    correo electrónico de cadena privada;

    // Los captadores y definidores se omiten por brevedad
}

Habilitar la validación en el controlador

Para habilitar la validación en su controlador, debe anotar el parámetro del método del controlador con @Valid o @Validated. Esto le dice a Spring que el objeto debe ser validado antes de ser procesado por el método.

Ejemplo de método de controlador:

@RestController
@RequestMapping("/usuarios")
Controlador de usuario de clase pública {

    @PostMapping
    EntidadRespuesta pública<UsuarioDTO> crearUsuario(@Valid @RequestBody UsuarioDTO usuarioDTO) {
        // Lógica para salvar al usuario
        return ResponseEntity.status(HttpStatus.CREADO).body(usuarioDTO);
    }
}

Manejo de errores de validación

Cuando ocurre un error de validación, Spring lanza una excepción MethodArgumentNotValidException. Puede manejar estos errores globalmente en su aplicación usando un @ControllerAdvice y personalizar la respuesta enviada al cliente.

Ejemplo de clase de manejo de errores:

@ControllerAdvice
clase pública GlobalExceptionHandler {

    @ExceptionHandler(MethodArgumentNotValidException.clase)
    entidadRespuesta pública<List<String>> handleValidationExceptions (MethodArgumentNotValidException ex) {
        Lista<String> errores = ex.getBindingResult()
            .getFieldErrors()
            .arroyo()
            .map(error -> error.getDefaultMessage())
            .collect(Collectors.toList());

        devolver ResponseEntity.badRequest().body(errores);
    }
}

Conclusión

Validar los datos de entrada es una práctica esencial para cualquier API RESTful. Con Spring Boot y Bean Validation, puede agregar fácilmente validaciones declarativas a sus objetos de transferencia de datos (DTO), asegurándose de que los datos que recibe sean correctos antes de procesarlos. Además, con un manejo adecuado de excepciones, puede brindar a sus clientes API respuestas útiles e informativas cuando los datos de entrada no cumplen con las expectativas.expectativas.

La implementación de validaciones es solo una parte del desarrollo de API REST con Spring Boot, pero es una parte importante que ayuda a mantener la calidad y confiabilidad de su aplicación. Si sigue las mejores prácticas y utiliza las herramientas proporcionadas por Spring Framework, puede crear API sólidas y eficientes.

Ahora responde el ejercicio sobre el contenido:

¿Cuál de las siguientes afirmaciones sobre la validación de datos en API REST con Spring Boot es correcta?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

Imagen del artículo Desarrollo de API REST con Spring Boot: manejo de excepciones y creación de respuestas personalizadas

Siguiente página del libro electrónico gratuito:

137Desarrollo de API REST con Spring Boot: manejo de excepciones y creación de respuestas personalizadas

5 minutos

¡Obtén tu certificado para este curso gratis! descargando la aplicación Cursa y leyendo el libro electrónico allí. ¡Disponible en Google Play o App Store!

Disponible en Google Play Disponible en App Store

+ 6,5 millones
estudiantes

Certificado gratuito y
válido con código QR

48 mil ejercicios
gratis

Calificación de 4.8/5
en tiendas de aplicaciones

Cursos gratuitos de
vídeo, audio y texto.