Отображение исключений пружинной загрузки в угловом приложении - PullRequest
0 голосов
/ 09 июля 2019

Я разрабатываю приложение с пружинной загрузкой и угловым, как я собираюсь отобразить исключение в угловом приложении

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

Я делаю это все время, и, к счастью, это очень легко.

Самый простой / лучший способ сделать это глобально для всего вашего приложения - это определить класс ExceptionHandler.Этот класс является пружинным компонентом, аннотированным @ControllerAdvice, и будет перехватывать исключения глобально и преобразовывать их в стандартный формат.

Примерно так:

@ControllerAdvice
public class JsonExceptionHandler {

    @ExceptionHandler(Exception.class)
    @ResponseBody
    public ResponseEntity<Object> handleAllOtherErrors(Exception exception) {
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
                .contentType(MediaType.APPLICATION_JSON)
                .body(new ErrorResponse(exception.getMessage()));
    }

}

Класс ответа об ошибке просто будетчто-то вроде этого:

public class ErrorResponse {

    private String message;

    public ErrorResponse(String message) {
        this.message = message;
    }

    public String getMessage() {
        return message;
    }
}

PS Вы можете обрабатывать различные исключения по-разному, например, в некоторых случаях вы можете захотеть выдать 400 неверных запросов для конкретного исключения.Все, что вам нужно сделать, это добавить другой метод и изменить исключение в аннотации @ExceptionHandler.

...

Затем с угловой стороны вам придется проверить код ответа HTTP.и если код ответа не является успешным (например, 400, 500), вы можете прочитать ответ, чтобы увидеть сообщение об ошибке.

Ответ будет выглядеть примерно так:

{
  "message": "Your exception message"
}

Какойможно просто прочитать в угловом формате через response.message (при условии JavaScript)

0 голосов
/ 11 июля 2019

В вашем загрузочном приложении Spring вы можете определить обработчик исключений в своих контроллерах:

@ResponseStatus(HttpStatus.BAD_REQUEST)
@ExceptionHandler(MyException.class)
public Message handleMyException(MyException ex) {
    return new Message("ERROR", ex.getMessage());
}

В этом примере Message - это просто простой класс, который вы хотите использовать для представления ваших ошибок.

Если вы хотите применить один и тот же обработчик исключений ко всем конечным точкам контроллера, вы можете добавить его в отдельный класс и добавить к нему примечание @ControllerAdvice.

После того, как вы это сделаете, выТеперь, когда возникнет исключение, вы получите «400 неверный запрос», и ответ JSON будет соответствовать объекту, который вы вернули, например:

{
    "type": "ERROR",
    "message": "This is my message"
}

В Angular * будет выброшено HttpClientошибка при возврате не HTTP-кода 2xx, который можно обработать, используя:

this.http
    .get<MyObject>('http://example.org/my-api')
    .subscribe(
        data => console.log(data),
        err => console.error(err) // This part of the code will be triggered
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...