我有一个api需要调用另外三个api,第二和第三个api的调用依赖于第一个api的结果。
我对最佳方法以及使用block、subscribe和flatmap之间的区别有些困惑。这三种方法都可以正常工作,但我不确定哪一种是最好的。
这是我目前的代码:
webClient1.getApi1(request.getId())
.subscribe(api1Response -> {
if (api1Response.hasData()) {
Mono<ApiTwoResponse> monoTwo = webClient2
.post()
.syncBody(...)
.bodyToMono(ApiTwoResponse.class)
monoTwo.subscribe(two -> log.info(two));
Mono<ApiThreeResponse> monoThree = webClient3
.put()
.syncBody(...)
.bodyToMono(ApiThreeResponse.class)
monoThree.subscribe(three -> log.info(three));
}
});
我也尝试过使用block,但似乎不被鼓励:
Api1Response response = webClient1.getApi1(request.getId()).block()
我也尝试了 flatmap,虽然它强制你返回一些东西:
webClient1.getApi1(request.getId())
.flatmap(api1Response -> {
...
return Mono.empty();
});
欢迎对以上代码提供帮助和反馈。