Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Haz como yo hice

@RestControllerAdvice
public class TratadorDeErrores {

@ExceptionHandler(EntityNotFoundException.class)
public ResponseEntity tratarError404() {
    return ResponseEntity.notFound().build();
}

@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity tratarError400(MethodArgumentNotValidException e) {
    var errores = e.getFieldErrors().stream()
            .map(DatosErrorValidacion::new)
            .toList();

    return ResponseEntity.badRequest().body(errores);
}

@ExceptionHandler(HttpMessageNotReadableException.class)
public ResponseEntity tratarError400Json(HttpMessageNotReadableException e) {
    return ResponseEntity.badRequest().body("El cuerpo de la solicitud es inválido.");
}

@ExceptionHandler(Exception.class)
public ResponseEntity tratarError500(Exception e) {
    return ResponseEntity.internalServerError().body("Ocurrió un error interno en el servidor.");
}

}

public record DatosErrorValidacion(
String campo,
String error
) {
public DatosErrorValidacion(FieldError error) {
this(error.getField(), error.getDefaultMessage());
}
}

@PostMapping
@Transactional
public ResponseEntity registrar(@RequestBody @Valid DatosRegistroPaciente datos,
UriComponentsBuilder uriBuilder) {
var paciente = new Paciente(datos);
repository.save(paciente);

var uri = uriBuilder.path("/pacientes/{id}").buildAndExpand(paciente.getId()).toUri();
return ResponseEntity.created(uri).body(new DatosDetallePaciente(paciente));

}

@RestControllerAdvice
public class TratadorDeErrores {

@ExceptionHandler(EntityNotFoundException.class)
public ResponseEntity tratarError404() {
    return ResponseEntity.notFound().build();
}

@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity tratarError400(MethodArgumentNotValidException e) {
    var errores = e.getFieldErrors().stream()
            .map(DatosErrorValidacion::new)
            .toList();

    return ResponseEntity.badRequest().body(errores);
}

}

1 respuesta

Hola David,

Gracias por compartir tu código con la comunidad. Es muy valioso ver cómo aplicas en la práctica los conceptos del curso.

Te recomiendo que puedas interactuar con el resto de nuestros compañeros por nuestro Discord.

En virtud de que en Discord el alcance es mayor, la interacción es inmediata y llega a más compañeros, y el foro solo quedaría para esclarecer cualquier duda que puedas tener sobre el contenido de los cursos.

De esa manera, si quieres seguir compartiendo tu código, proyectos o repositorios, sea por el Discord — con certeza por ahí llegará a más personas.

¡Gracias nuevamente por tu aporte!

Saludos,

Si este post te ayudó, por favor, marca como solucionado ✓. ¡Continúa con tus estudios!