当前位置: 首页 > 知识库问答 >
问题:

如何使用Reactor(Spring WebClient)进行重复呼叫?

汪泓
2023-03-14

我使用Reactor(Spring5 WebClient)作为我的反应式编程API。我有两个Rest点要打。第一个的结果将是第二个的参数。对于第二个API,它将返回一个带有“hasMore”值的结果。如果这个值为true,我应该更改分页参数并再次调用第二个API。演示代码如下所示:

 client.getApi1()
        .map(r -> r.getResult())
        .flatMap(p -> client.getApi2(p, 2(page size), 1(page start)))
        .subscribe(r -> System.out.println(r.isHasmore()));

如何重复调用第二个API(getApi2),直到“hasMore”为false。

此外,我需要更改参数页面大小和页面开始

共有2个答案

井通
2023-03-14

我通过使用展开算子找到了一个解决方案。但是,需要对我的API调用做一些更改。来自getApi2的响应需要返回最后一页大小和最后一页开始。

    client.getApi1()
        .map(r -> r.getResult())
        .getApi2(p, 2, 1)
        .expand(res -> {
            if (res.isHasmore()) {
                return client.getApi2(orgId, res.getPageSize(), res.PageStart() + 1);
            }
            return Flux.empty();
        });
章哲彦
2023-03-14

请尝试以下代码:

 AtomicInteger pageCounter = new AtomicInteger(0);
 client.getApi1()
    .map(r -> r.getResult())
    .flatMap(p -> client.getApi2(p, 2(page size), pageCounter.incrementAndGet()))
    .repeat()            
    .takeWhile(r -> r.isHasmore())
    .subscribe(r -> System.out.println(r.isHasmore()));

重复()调用getApi2无限。虽然(连续预测)中继值,而连续预测(r.isHasmore())返回true

 类似资料:
  • 我对Twilio和呼叫跟踪服务非常陌生,但由于Mongoose Metrics可以满足我的需求,但成本太高,所以我尝试将Mongoose换成另一款,但价格更便宜。 我想知道Twilio能否取代Mongoose Metrics呼叫跟踪服务。我真正需要的是,我需要用我的区号生成随机电话号码,这些号码需要重定向到我的客户业务电话号码。 呼叫重定向的原因是当客户实际拨打生成的电话号码时,呼叫可以重定向到我

  • 我是 Rest Web 服务的新手。我已经创建了一个泽西岛客户端,能够拨打GET电话。现在我无法理解如何使用相同的客户端代码进行其他 POST 调用。我需要更改方法发布以及后续调用的参数以及 URI。以下是我想到的问题: 我是否应该创建一个单例类并获取客户端对象,并且对于每次调用,我都需要重复以下行。 WebResource WebResource=客户端.resource(“http://loc

  • 我必须使用WebClient进行分页API调用,并最终组合所有结果。例如:个人最新1000交易详情。在一次调用中,我将在json响应(List)中获得最大100个对象。这个人最多只能得到1000条记录。 在伪代码java中,它可能看起来像这样 如何在SpringMVC中以反应式方式编写相同的内容而不阻塞? 像这样的东西???我不知道。帮助我

  • 问题内容: 在Eclipse中创建了一个新的标准Java 7项目,并成功地成功获取了like 的实例,如下所示: 在主要方法中,此方法运行良好,据我所知,该部分有效。但我不知道如何实际使用它。在SoapUI中,我通过以下请求调用此服务: 如何在Java中执行相同的请求?我的目标是我有一个很长的清单,我需要为每个清单运行一个这样的请求。在SoapUI中手动进行操作有点烦人,因此我想使用一个简单的Ja

  • 我知道实现类似的最简单的方法是使用拨号动词重定向来电,但原因与问题并不相关,这是不可能的。