如何迭代(循环)Mono <?>

时间:2019-06-07 14:24:28

标签: java mono webclient cycle

我有代码,可以发送两个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对象是通过RequestBody进行以下JSON解析的:

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

现在我可以先发送一个文档

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

但是最好的方式是遍历PaymentOrders.Documents并发送多个具有MONO功能的POST(cli.post)请求...

PS:我的方法具有下一个签名:

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

0 个答案:

没有答案