...
| Bloque de código | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
//EJEMPLO ResponseEntity con éxito
public ResponseEntity<String> simpleAsyncTask( @RequestParam( defaultValue = "60" ) long t,
@RequestParam( defaultValue = "1" ) long sleep ) throws InterruptedException {
String result = "";
log.info( "Entro en simpleAsyncTask {} - {}", t, sleep );
final CompletableFuture<String> asyncStatus = service.asyncMethod( sleep * 1000, t );
result = asyncStatus.getNow( "ko" );
log.info( "Salgo de simpleAsyncTask" );
return ResponseEntity.ok( result );
}
//EJEMPLO ResponseEntity con error
@ExceptionHandler( TestLocalHandlerException.class )
public ResponseEntity<TestLocalHandlerError> handleTestLocalHandler( TestLocalHandlerException ex ) {
final TestLocalHandlerError error = TestLocalHandlerError.builder()
.estado( HttpStatus.INTERNAL_SERVER_ERROR ).fecha( LocalDateTime.now() )
.mensaje( ex.getMessage() ).build();
return ResponseEntity.status( HttpStatus.INTERNAL_SERVER_ERROR ).body( error );
} |
Como complemeto a estas buenas prácticas, hay que recordar tener en mente siempre el enfoque a recurso en la definición de los endpoints:
- definir path con sustantivos según el recurso a exponer, evitando usar verbos (Por ejemplo /pueblos, /titulaciones, etc).
- usar sustantivos en plural.
- usar los métodos HTTP correctamente, por ejemplo: un mismo path /cars puede servir para obtener un coche (GET) o para insertar un coche (POST) en dos endpoints diferentes.
Más info sobre buenas prácticas en la Wiki de FundeWeb => https://wiki.um.es/wikis/programador/doku.php?id=fdw2.0:fundeweb2.0:gt:rest:buenas_pracitcas
...
Guía detallada
Spring Boot proporciona varios mecanismos para capturar excepciones (global o localmente) y devolver mensajes de error (estándar o personalizados). Estos mecanismos han ido evolucionando con las diversas versiones del framework y, en algunos casos, pueden llegar a solaparse.
...