Как повторить (цикл) Mono - PullRequest
0 голосов
/ 07 июня 2019

У меня есть код, который отправляет два http-запроса:

return getProducts(jwt, req).flatMap(accounts -> {
            var account = accounts.stream()
                    .filter(a -> a.number.equals(paymentOrders.Documents.get(0).AccountNumber))
                    .findFirst();

            return runSPDigestRequest(jwt, cli ->
                            cli.post()
                                    .uri(uriBuilder -> uriBuilder.path(URI_PAYMENT_ORDER).query(req.getURI().getQuery()).build())
                                    .body(BodyInserters.fromObject(prepareParametersMap(account, paymentOrders.Documents.get(0))))
                                    .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
                                    .exchange()
                    , URI_PAYMENT_ORDER, "POST").flatMap(response -> {
                at.decrementAndGet();
                return response.toEntity(String.class);
            });
        });

Мои объекты paymentOrders были созданы для анализа после JSON через RequestBody:

{
  "ClientId": "b215a9df-4313-46fe-a50d-d29f9a9afddb",
  "Documents": [
    {
      "AccountNumber": "01",
    },
    {
      "AccountNumber": "02",
    }
  ]
}

Теперь я могу просто отправитьfirst Documents :

... paymentOrders.Documents.get(0)...

Но как лучше всего пройти через paymentOrders.Documents и отправить несколько запросов POST (cli.post) с MONO ...

PS: Мой метод имеет следующую подпись:

public Mono<ResponseEntity> sendPayments(@AuthenticationPrincipal Jwt jwt, @RequestBody PaymentOrders paymentOrders, ServerHttpRequest req) {
...