¿Cómo validas los datos de una petición en Spring Boot?
Opciones
- Solo con sentencias
ifrepetidas en cada controlador - Con anotaciones de restricción como
@NotBlank, más@Valid(Opción correcta) - Con reglas CSS que se aplican en el lado del cliente
- 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.