Как изменить код состояния в ответе на весеннюю загрузку? - PullRequest
0 голосов
/ 01 июля 2019

Я делаю простой сервис отдыха, который выполняет http-вызовы и собирает данные с помощью RestTemplate.

Иногда я получаю ошибку NotFound, а иногда и ошибки BadRequest.

Я хочу ответить тем же кодом состояния для моего клиента, и Spring, кажется, имеет это сопоставление из коробки. сообщение в порядке, но код состояния всегда 500 Внутренняя ошибка сервера.

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

    "timestamp": "2019-07-01T17:56:04.539+0000",
    "status": 500,
    "error": "Internal Server Error",
    "message": "400 Bad Request",
    "path": "/8b8a38a9-a290-4560-84f6-3d4466e8d7901"
}

Я бы хотел, чтобы это было так

    "timestamp": "2019-07-01T17:56:04.539+0000",
    "status": 400,
    "error": "Internal Server Error",
    "message": "400 Bad Request",
    "path": "/8b8a38a9-a290-4560-84f6-3d4466e8d7901"
}

Выдает HttpClientErrorException.BadRequest или HttpClientErrorException.NotFound

мой код - простая конечная точка:

    @GetMapping("/{id}")
    public MyModel getInfo(@PathVariable String id){
        return MyService.getInfo(id);
    }

Ответы [ 2 ]

3 голосов
/ 01 июля 2019

Вы можете создать глобальную обработку исключений с аннотацией @ControllerAdvice. Как это:

@ControllerAdvice
public class RestResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {

    @ExceptionHandler(value = YourExceptionTypes.class)
    protected ResponseEntity<Object> handleBusinessException(RuntimeException exception, WebRequest request) {
        return handleExceptionInternal(exception, exception.getMessage(), new HttpHeaders(), HttpStatus.NOT_ACCEPTABLE, request);
    }
}

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

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

Возможный дубликат Обработка исключений Spring Resttemplate Вашему коду необходим совет контроллера для обработки исключений из службы, которую он вызывает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...