Versiones comparadas

Clave

  • Se ha añadido esta línea.
  • Se ha eliminado esta línea.
  • El formato se ha cambiado.

...

  1. ResponseStatusException => Devolver modelo de respuesta estándar de forma rápida y correcta .
  2. DefaultErrorAttributes => Modificar el modelo de respuesta de forma global.
  3. ExceptionHandler => Manejar localmente una excepción propia y devolver el modelo de respuesta estándar o un modelo propio.
  4. ControllerAdvice => Manejar de forma global todas mis excepciones y devolver el modelo de respuesta estándar o un modelo propio.
  5. ControllerAdvice + ResponseEntityExceptionHandler => Modificar el comportamiento y el modelo de respuesta para excepciones internas capturadas por Spring Boot.
  6. [EXTRA] Bean Validation => Modificar la respuesta si se usa para validar parámetros.


  1. ResponseStatusException

...

  1. Útil para devolver un error de forma correcta y rápida, sin preocuparnos de los datos devueltos.

    Se construye la excepción pasándole el status code HTTP de error deseado y Spring Boot la captura y maneja de forma automática.
    Devuelve el modelo de respuesta estándar (ver siguiente apartado).


    Ventajas: rápido,

...

  1. status code parametrizable.
    Desventajas: Modelo de respuesta fijo

...

  1. .

    Ejemplo:

    Bloque de código
    languagejava
    themeEclipse
    titleEjemplo de uso de ResponseStatusException
    .....
    } catch ( final TestException e2 ) {
        //Se captura una excepción existente y se lanza una nueva ResponseStatusException
    	log.error( "Test de prueba de ResponseStatusException con custom FundeWebJSErrorAttributtes: {}",e2.getMessage() );
    	throw new ResponseStatusException( HttpStatus.INTERNAL_SERVER_ERROR, e2.getMessage(),e2.getCause() );
    
    } ....

    FuenteRest handleError (https://gitlab.um.es/mncs/fundewebjsshowcase-api/-/blob/desarrollo/src/main/java/es/um/atica/fundewebjsshowcasebackend/services/rest/impl/RestTestImpl.java).

    Petición:

    Bloque de código
    languagexml
    titleRequest ResponseStatusException
    https://fundewebjsshowcasedesa.um.es/api/v1.0/public/handleError/5

    Respuesta:

    Bloque de código
    languagejson
    titleResponse ResponseStatusException
    {
        "fecha": "05/10/2021 10:31:27",
        "estado": "INTERNAL_SERVER_ERROR",
        "mensaje": "2. ResponseStatusException con FundeWebJSErrorAttributtes",
        "tipoRespuesta": "CUSTOM_DefaultErrorAttributes"
    }


    1.1 ResponseStatus:

    La excepción ResponseStatusException es una evolución de otro mecanismo, la notación @ResponseStatus .
    Por comodidad se recomienda usar ResponseStatusException, pero es posible seguir usando esta notación declarándola nuestras excepciones y lanzándolas desde nuestra API REST directamente. 
    Ver: Ejemplo ResponseStatus (https://gitlab.um.es/mncs/fundewebjsshowcase-api/-/blob/desarrollo/src/main/java/es/um/atica/fundewebjsshowcasebackend/exceptions/TestResponseStatusException.java).

    Ejemplo ejecución:

    Bloque de código
    titleRequest con @ResponseStatus
    https://fundewebjsshowcasedesa.um.es/api/v1.0/public/handleError/1


    Bloque de código
    languagejson
    titleRespuesta con @ResponseStatus
    {
        "fecha": "05/10/2021 10:45:25",
        "estado": "BAD_REQUEST",
        "mensaje": "1. Notación ResponseStatus con FundeWebJSErrorAttributtes",
        "tipoRespuesta": "CUSTOM_DefaultErrorAttributes"
    }

...





  1. DefaultErrorAttributes

    Definición del modelo de respuesta estándar.
    Se puede modificar y declarar para configurar un modelo de respuesta común para toda la aplicación.

    Poner código de servicio y enlaces a gitlab.
    Poner petición y respuesta ejemplo de postman.


  2. ExceptionHandler


    Manejar excepciones de forma local, permite modificar valores de la respuesta http así como el modelo.

    Desventajas: solo funciona de forma local.

    Poner código de servicio y enlaces a gitlab.
    Poner petición y respuesta ejemplo de postman.
  3. ControllerAdvice

    Permite centralizar el manejo de excepciones para que se capturen de forma global.

    Poner código de servicio y enlaces a gitlab.
    Poner petición y respuesta ejemplo de postman.


  • ControllerAdvice + ResponseEntityExceptionHandler

    Permite extender y sobreescribir el manejo de las excepciones internas que realiza Spring Boot de forma automática.
    Poner listado de excepciones.

    Poner código de servicio y enlaces a gitlab.
    Poner petición y respuesta ejemplo de postman.


  • Bean Validation

    Configuración y uso de Bean Validation.
    Handlers a sobreescribir para modificar respuesta HTTP o modelo.
    Poner código de servicio y enlaces a gitlab.
    Poner petición y respuesta ejemplo de postman.

...