У меня есть контроллер отдыха в службе весенней загрузки следующим образом:
Public ResponseEntity getDocContent (идентификатор строки)
Это действие контроллера создает MediaType.Octet_Stream
Мне интересно, что вернуть в случае ответа не Http OK, когда у меня действительно нет содержимого массива байтов, а есть строка с сообщением об ошибке. Я бы не хотел создавать поток октетов в случаях ошибок, а вместо этого ошибку JSon
Я могу заставить службу создавать как поток октетов, так и application/json, но моя путаница связана с возвращаемым типом массива байтов в случае ошибок, и в этом случае я хочу сгенерировать Json, а не массив байтов
Пожалуйста, дайте мне идеи о том, как решить эту
Мне все еще нужно вернуть код ошибки HttpStatus в случае ошибки
Добавьте controllerAdvice для обработки выброшенных исключений в RestContoller.
@ControllerAdvice
public class CustomExceptionHandler extends ResponseEntityExceptionHandler{
@ExceptionHandler(MyException.class)
@ResponseStatus(HttpStatus.CONFLICT) //Just an example code
public ResponseEntity<GeneralMessage> handleGacaException(MyException ex) {
LOGGER.error(ex.getMessage());
GeneralMessage errorMessage = new GeneralMessage(ex.getErrorCode().toString(), ex.getErrorMessage());
return ResponseEntity.status(HttpStatus.CONFLICT).body(errorMessage);
}
}
Затем бросьте MyException на RestController.
Вы пытались создать исключение и обработать его на внешнем интерфейсе?