При использовании веб-клиента Spring для запроса JSON из REST API тело ответа от сервера сохраняется в простом Map
. Запрос к серверу содержит идентификатор, но он не включен в ответ, но требуется для интерпретации ответа.
Я бы хотел включить идентификатор в результат параллельного вызова, поэтому вместо этого вместо List<Map> data
должно быть Map<UUID,Map> data
или аналогичным. Таким образом, ответ сервера соединяется с идентификатором, который использовался для получения ответа.
List<Map> data = Flux.fromIterable(ids)
.parallel()
.runOn(Schedulers.elastic())
.flatMap(this::callAPI).sequential().collectList().block();
private Mono<Map> callAPI(UUID id) {
return client.get().uri(uriBuilder -> uriBuilder
.path("/{id}/")
.build(id))
.retrieve().bodyToMono(Map.class);
}