我试图使用WebClient实现以下场景。使用RestTemplate很琐碎,但我再也做不到了。
Mono<T1> t1 = webClient.get()...retrieve()...;
Mono<T2> t2;
if (t1.getResult().getValue() > 0) {
t2 = webClient.get().buildUsing(t1.getResult().getValue())...retrieve()...);
} else {
t2 = Mono.empty();
}
return(Mono.zip(t1, t2, mergeFunction));
我认为zipwhen
非常适合用于此目的。zipwhen
等待第一个mono的结果,然后将两个结果组合成tuple2
WebClient.builder().baseUrl("https://jsonplaceholder.typicode.com/todos/1")
.build()
.get()
.retrieve()
.bodyToMono(User.class)
.zipWhen(r -> {
if (r.getId() == 1) {
return WebClient.builder().baseUrl("https://jsonplaceholder.typicode.com/todos/2")
.build()
.get()
.retrieve()
.bodyToMono(User.class);
} else {
return Mono.empty();
}
});
结果是一个mono
包含这两个值。
我有一个Restapi,它将从一个网站下载pdf文件,然后将pdf文件返回给调用者。 使用下面的代码,我可以得到
问题内容: 我正在使用spring-webflux WebClient (内部版本20170502.221452-172)访问Web应用程序,该Web应用程序生成Entry对象流(application / stream + json),如下所示: 尽管Entry对象的反序列化对于使用标准通用类型(包括Java时间(JSR-310)数据类型,如java.time.Instant)的POJO都可以正
我正在使用spring-webflux WebClient(build 20170502.221452-172)访问一个Web应用程序,该应用程序生成一个条目对象流(application/stream+JSON),如下所示: 虽然条目对象的反序列化对于使用标准通用类型(包括Java.time.instant等Java time(JSR-310)数据类型)的POJO很好,但我想知道,为了将任何自定
但我会重复两次几乎相同的比较,这看起来更糟糕。你们怎么处理?
看起来像Spring webflow客户端的json配置示例: 与这个问题相同,但适用于jaxb xml序列化。有JAXB和xml的解码器实现吗?是否可以使用HttpMessageConverter作为webclient的解码器,以使Spring boot控制器和客户端实现一致?
问题内容: 我想做的是在有webclient的Webflux中的Mono上有条件地重复。情况如下: 我们有一些商务休息服务服务,可返回生成的文档。此文档的生成是由在此之前调用的另一服务触发的。但是,回到正题:文档生成服务需要10到30秒。我们想要做的是:10秒钟后检查是否生成文档(单声道)。如果是这样,一切都很好。如果不是,请在5秒钟后重复(或重试)并检查是否生成了文档。依此类推,直到(最坏的情况