如何在Spring Webflux / WebClient中进行链接的api调用

时间:2019-03-07 06:52:05

标签: spring-boot reactive-programming spring-webflux

我正在创建一个聚合服务,该服务需要调用api并基于进行第二次调用的响应等。因此,我正在调用api链,每个api都取决于上一个的响应。

Example Scenario:
    request 1 {"Date1" : "2019-03-03"}    
    response 1 {"price" : 10}
    request 2 {"Date1" : "2019-03-03", "price":10}
    response 2 {"recommendedPrice" : 8}
    request 2 {"Date1" : "2019-03-03", "price":10, "recommendedPrice":8}
    and so on

我创建了这个

public Mono<Result> getFinalRes(Request req){
    res = client.post()
    .uri(url)                                                                                                                           
    .body(BodyInserters.fromObject(request))
    .exchange()
    .flatMap(res -> res.bodyToMono(PriceTuple.class))   

    return res.subscribe(res -> getApi2(res,request ))
}
                        Or

public Mono<Result> getFinalRes(Request req){
    res = client.post()
    .uri(url)                                                                                                                           
    .body(BodyInserters.fromObject(request))
    .exchange()
    .flatMap(res -> getApi2(res,request ))   

}

getApi2()再次做类似的事情。我以这种方式进行链接是否正确,或者有更好的方式进行这种请求链接。

0 个答案:

没有答案