У меня есть Exception, который я и написал:
public class UserIdentificationException extends RuntimeException {
private MobileApiResponseCode code;
public UserIdentificationException(MobileApiResponseCode code) {
this.code = code;
}
public MobileApiResponseCode getCode() {
return code;
}
}
Есть обработчик исключений, тоже написанный мной:
@ControllerAdvice
public class MobileApiExceptionHandler {
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
@ExceptionHandler(value = UserIdentificationException.class)
public ApiResponse<MobileMessageResponse> handleUserIdentificationException(UserIdentificationException e) {
return new ApiResponse<>(ApiBaseResponseCode.OK, e.getCode().getDescription());
}
}
Есть тестовый контроллер:
@GetMapping("/test")
public ApiResponse<MobileMessageResponse> test() {
throw new UserIdentificationException(MobileApiResponseCode.INVALID_AUTH_TOKEN);
}
Ожидается, что при запросе я получу заявленное в обработчике содержимое ApiResponse, но вместо этого приходит пустота и статус 404.
Подскажите, что не так?
UPD: ответ, конвертированный в JSON, выглядит так:
{"code":15,"errorMsg":"invalid auth token"}
А уже при попытке его вернуть происходит 404.
В общем, оказалось, что не хватает аннотации @ResponseBody над методом обработчика.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости