Как сохранить тело реагирования HTTP -запроса асинхронно в Spring WebClientJAVA

Программисты JAVA общаются здесь
Anonymous
Как сохранить тело реагирования HTTP -запроса асинхронно в Spring WebClient

Сообщение Anonymous »

Я работаю над приложением Java Spring Boot, которое реализует WebClient для обработки HTTP -запроса REST. Запросы получены в конечную точку, и ответ получен и сопоставлен с моно, а затем дополнительно обрабатывается в приложении. Урезанная версия оригинального метода выглядит похожа на это: < /p>

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

Optional result = client.get()
.uri("/entities/{id}", id).accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToMono(MyEntity.class)
.blockOptional();
Теперь я хочу «перехватить» тело ответа с сырым JSON и сохранить его с помощью асинхронной (или не блокирующей) операции ввода-вывода, не блокируя и не мешая потоку ответов через Конечная точка.
Я создал метод для сохранения и отметил его аннотацией @Async < /code>. Тело сначала сохраняется в строке, передается методу, а затем тело отображается с классом MyEntity . Модифицированный метод, который успешно сохраняется и преобразует корпус строки обратно в MyEntity похож на это:

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

Optional result = client.get()
.uri("/entities/{id}", id).accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToMono(String.class)
.doOnNext(responseBody -> persistResponse(responseBody))
.doOnNext(savedResponse -> mapToMyEntity(savedResponse))
.blockOptional();
Я не уверен, что это на самом деле правильный способ реализации функциональности, и хотел бы некоторое руководство по правильному обработке тела ответа JSON, а не мешая существующему потоку.

Подробнее здесь: https://stackoverflow.com/questions/793 ... pring-webc

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