Repaso
English
Spring, JPA y Java WebIntermedioSPR-22

¿Cómo validas los datos de una petición en Spring Boot?

Opciones

  1. Solo con sentencias if repetidas en cada controlador
  2. Con anotaciones de restricción como @NotBlank, más @Valid (Opción correcta)
  3. Con reglas CSS que se aplican en el lado del cliente
  4. No es posible validar peticiones en Spring

Respuesta

Añade anotaciones de Bean Validation (@NotBlank, @Email, @Size...) en los campos y usa @Valid en el parámetro del controlador

Por qué

Bean Validation (Jakarta Validation) te permite declarar reglas en los campos. Pon @Valid antes del parámetro @RequestBody y Spring comprueba las reglas antes de ejecutar tu método. Si fallan, lanza MethodArgumentNotValidException, que puedes convertir en una respuesta 400.

El starter es spring-boot-starter-validation.

Nunca confíes en los datos del cliente: valida en el servidor aunque el front-end también valide.

public record CreateUserRequest(
    @NotBlank String name,
    @Email @NotBlank String email,
    @Size(min = 8) String password
) {}

Recuerda

@Valid + anotaciones de restricción = validación declarativa.

Términos clave

Practica esta pregunta en Repaso