Spring RestController, возвращающий ResponseEntity<byte[]> в случае ошибок

У меня есть контроллер отдыха в службе весенней загрузки следующим образом:

Public ResponseEntity getDocContent (идентификатор строки)

Это действие контроллера создает MediaType.Octet_Stream

Мне интересно, что вернуть в случае ответа не Http OK, когда у меня действительно нет содержимого массива байтов, а есть строка с сообщением об ошибке. Я бы не хотел создавать поток октетов в случаях ошибок, а вместо этого ошибку JSon

Я могу заставить службу создавать как поток октетов, так и application/json, но моя путаница связана с возвращаемым типом массива байтов в случае ошибок, и в этом случае я хочу сгенерировать Json, а не массив байтов

Пожалуйста, дайте мне идеи о том, как решить эту

Вы пытались создать исключение и обработать его на внешнем интерфейсе?

Houssem Badri 18.04.2019 12:57

Мне все еще нужно вернуть код ошибки HttpStatus в случае ошибки

Ray S 18.04.2019 13:20
0
2
994
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Добавьте 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.

Другие вопросы по теме