Наконец-то я изучаю программирование в функциональном стиле с помощью Reactor. Так что я новичок в этом.
Первое, что я хочу сделать, это вызвать внешний API с помощью WebClient. Этот вызов должен быть рекурсивным, так как ответ предоставляет следующее значение параметра вызова, и мне нужно использовать его при следующем вызове, пока не будет достигнут тривиальный случай.
Вот что придумали:
Flux.from(p -> queryUntilNow())
.flatMap(res -> // res is object )
.subscribe( // process )
private Flux<ApiResp> queryUntilNow() {
return Flux.from(p -> {
queryAPI(since)
.doOnError(System.out::println)
.subscribe(apiResp -> {
if (since == apiResp.last) return;
since = apiResp.last;
queryUntilNow();
});
});
}
private Flux<ApiResp> queryAPI(int last) {
Flux<ApiResp> resp = kapi.get()
.uri("/OHLC?pair={pair}&since={since}&interval={int}", pair, last, interval)
.retrieve()
.bodyToFlux(ApiResp.class);
return resp;
}
Похоже, мне нужно немного больше подстроить свое мышление под этот стиль программирования, поэтому, пожалуйста, дайте мне несколько примеров и объяснений.
Спасибо!