El siguiente código genera una excepción como UserAlreadyExist.
Optional<User> userCheck = userRepository.findByUsername(createRequest.getUsername()); if(StringUtils.hasText(userCheck.get().getUsername())){ String errorMessage = "User already exist: "+ userCheck.get().getUsername(); throw new UserAlreadyExistException(errorMessage); }Cuando trato de recibir un mensaje de error de mi aplicación de reacción con estos códigos, solo recibo un mensaje de error interno del servidor. Mi encabezado contiene token de encabezado y encabezado de aplicación/JSON.
export const createUserService = (data) => { return new Promise(((resolve, reject) => { axios.post(USERS_BASE, data, getHeaderWithToken()) .then(function (response) { resolve(response); }) .catch(error=>{ console.log(error)//returns "Internal Server Error" message console.log(error.response) // returns object with empty message field and other parameters. reject(error) }) }));};
¿Cómo puedo obtener el mensaje de error que envié como
String errorMessage = "User already exist: "+ userCheck.get().getUsername(); throw new UserAlreadyExistException(errorMessage);esta es mi clase UserAlreadyExistException por cierto.
public class UserAlreadyExistException extends RuntimeException { public UserAlreadyExistException(String message) { super(message); }}Puede devolver una respuesta personalizada con @RestControllerAdvice para la excepción personalizada que está lanzando. Por favor, consulte el ejemplo a continuación.
@RestControllerAdvice public class ControllerExceptionHandler { @ExceptionHandler(value = {UserAlreadyExistException.class}) @ResponseStatus(value = HttpStatus.BAD_REQUEST) public ErrorMessage userAlreadyExistException(UserAlreadyExistException ex, WebRequest request) { ErrorMessage message = new ErrorMessage( status, date, ex.getMessage(), description); return message; } }Te será mucho más fácil ver el error en tu aplicación Frontent con una Respuesta que te devolverá así.