- Obtener vínculo
- X
- Correo electrónico
- Otras apps
En esta entrada veremos como implementar un error handling usando las anotaciones @ControllerAdvice y @ExceptionHandler de Spring Boot extendiendo de ExceptionHandlerExceptionResolver.
Nuestras respuestas serán personalizadas.
Validaremos los headers, body, tipo de dato en el header, el path, parámetros en el body y tipo, tipo de solicitud HTTP, etc.
Implementaremos los errores para las siguientes excepciones:
- HttpRequestMethodNotSupportedException
Se ejecutara cuando el tipo de método HTTP (POST,GET,PUT, etc.) no sea el que el endpoint está esperando.
- HttpMediaTypeNotSupportedException
- MissingRequestHeaderException
- HttpMessageNotReadableException
- MethodArgumentNotValidException
- ConstraintViolationException
- MethodArgumentTypeMismatchException
- NoHandlerFoundException
En otras palabras, cuando una de estas excepciones ocurra en nuestra API, automáticamente nuestro error handler detonará con una respuesta personalizada que definamos.
Nuestra respuesta tendrá la siguiente estructura:
Tendrá un mensaje y un arreglo de detalles de tipo String.
Nuestro endpoint o Controller es el siguiente
Para este ejemplo iremos haciendo la prueba con el endpoint insertPerson(), tanto el header como el body son requeridos, sólo requerimos un header de tipo int y se llama idPais.
En el objeto Persona he colocado las siguientes anotaciones para validar todos los parámetros del body
@NotEmpty nos sirve para indicarle que no deben venir null o vacíos.
Finalmente nuestra clase de excepciones es la siguiente:
En el caso de la excepción NoHandlerFoundException tenemos que configurar en el application.properties las siguientes lineas para que pueda responder correctamente:
Dejo el link hacia el proyecto completo en github
- Obtener vínculo
- X
- Correo electrónico
- Otras apps
Comentarios
Publicar un comentario