Как в целом десериализовать ответ Spring WebClient [закрыто]JAVA

Программисты JAVA общаются здесь
Anonymous
Как в целом десериализовать ответ Spring WebClient [закрыто]

Сообщение Anonymous »

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

Код: Выделить всё

public class GenericResponse  {
private T data;
private String message;
}
Здесь T может быть любым DTO.
Мой общий сервис выглядит так.

Код: Выделить всё

public RestService{
public  T getRestUrl(url){
return webClient
.get()
.uri(url)
.headers(httpHeaders -> httpHeaders.addAll(getApiHeaders()))
.retrieve()
.onStatus(HttpStatusCode::isError, this::handleError)
.bodyToMono(new ParameterizedTypeReference() {})
.block();
}
}

Код: Выделить всё

GenericResponse response = restService.getRestUrl(urlWithParameters);
Однако, когда я запускаю запрос, ответ не сериализуется в MyCustomDTO, он сериализуется в LinkedHashMap, поскольку Java не может определить, что такое T во время выполнения.
Есть ли какой-либо обходной путь или какой-либо другой способ создать универсальную службу REST для удаления дублирования кода каждый раз, когда я делаю вызов REST.>

Подробнее здесь: https://stackoverflow.com/questions/798 ... t-response

Вернуться в «JAVA»