RestTemplate.exchange - какой класс он должен возвращать?

Обращаюсь из одного своего сервиса (серв1) в другой (серв2). При нормальном выполнении серв2 возвращает экземпляр класса, например, MyNormalClass, при возникновении ошибки через обработчик ошибки он возвращает экземпляр класса MyExceptionClass с описанием ошибки, временем и т.д.

// Код на Kotlin. Но ситуация аналогичная для Java за разницей в синтаксисе.
@Test
fun `test1: incorrect data - response error`() {
    val someTransferObject = TransferObject("test")
    val requestEntity = RequestEntity.post("/api/v1")
        .contentType(MediaType.APPLICATION_JSON)
        .body(
            someTransferObject
        )

    val answer = testRestTemplate.exchange(requestEntity, MyNormalClass::class.java)

    assertThat(answer.statusCode).isEqualTo(HttpStatus.BAD_REQUEST)
    assertThat(answer.body).isNotNull
}

Если на серв2 из-за переданных в него данных возникнет ошибка, то он вернет статус HttpStatus.BAD_REQUEST и в теле экземпляр класса, отличного от MyNormalClass, что вызовет ошибку в серв1. При этом даже не будет возможность обработать статус ответа.

Какой должен быть указан класса объекта, возвращаемого функцией exchange (вообще думаю для всех других функций, типа getForObject, аналогичная ситуация) для подобных случаев? И вообще есть ли какие-то общие правила для exchange? Буду благодарен за ссылки на конкретную литературу или за развернутый ответ.

PS: Я видел, что можно ставить класс Any и потом мапить тело ответа в конкретный класс, но является ли это хорошей практикой?


Ответы (0 шт):