我有代码,可以发送两个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) {