Filtro CPL Polarizado ventajas

How to validate Request Headers [String, Integer and Boolean] @RequestBody @RequestHeader Spring Boot - Full example

Bienvenidos a esta nueva entrada del blog.

Veremos como validar un String, Integer y un Boolean en el Request o el Header que se declaran en un @RequestHeader o @RequestBody de un Microservicio REST con Spring Boot.

Para nuestro ejemplo manejaremos una identidad  o model en nuestro @RequestBody que contendrá lo siguiente:

 

Nuestro código del controller esta así

 

 

Si todo sale bien nos regresará un mensaje diciendo que todo esta bien. 

Al armar un request desde Postman quedaría de la siguiente manera

 


Pero si le ingresamos tipos de datos que no son los correspondientes con los esperados por el @RequestHeader o el modelo del @RequestBody ??

 Si le cambio el tipo de dato en el request de Postman al atributo age y envío la petición pasa lo siguiente

 

 Nos salta un error que no se puede parsear al tipo de dato correspondiente.

En nuestro caso ya tenemos preparado una respuesta genérica para informar a quien nos consume, sobre el problema que esta sucediendo.  

Nuestra clase que arma el response para informar del error es la siguiente

 

 

El error provocado por el tipo de datos ya lo hace el API por nosotros, pero hay algunos que pasan desapercibido. Por ejemplo en este caso nos informo del error. 

 Pero que pasa si yo en el campo del Boolean active le pongo un numero (7)?, o en el caso del Integer age le pongo un decimal (34.6).

Vamos a ver como se comporta nuestro microservicio al cambiarle esos datos en el request del Postman.

Para el caso de la propiedad age para transparente

 

 Para el caso del Boolean le ponemos un número

 

 Están pasando transparente a nuestra validación.

Yo no puedo tener una edad decimal, o un boolean con un valor 3. 

Entonces vamos a validar esos casos. Lo haremos desde el modelo, que es donde parte el API para parsear a los tipos correspondientes.

Validamos el atributo age, que no reciba decimales

El metodo setAge quedaría así

 

 

 Ya no se nos esta escapando.

Ahora validaremos el Boolean active usando la misma estrategia del Integer

Nuestro setActive quedaría así

 

 Y ahora si, nos valida 

 

 Si queremos validar también el String  name, que no le pasen una cadena "true" o "false", podemos validarlo en el model.

 Esto va a depender de las políticas de la empresa.

Para el caso de los headers lo podemos hacer usando la misma estrategia como lo hicimos con el body.

Esto sería todo de mi parte. Espero les sea de utilidad.

Cualquier duda pueden dejar su comentario.

Les dejo el link de descarga del proyecto completo.


Descargar


Comentarios

  1. Best Casinos in San Francisco, CA - Mapyro
    The cheapest way to get from 영천 출장샵 San Francisco to Alton City Casino 포항 출장샵 & Hotel costs 의정부 출장마사지 only $3, 전라남도 출장안마 and the quickest way takes 안동 출장마사지 just 4 mins. Find the travel option that

    ResponderBorrar

Publicar un comentario