我有两个目标
CarParts {
String id
WorkItem workItem
}
WorkItemResponse {
List<WorkItem> resource; <- always contains one item.
}
我想在汽车零件上创建一个webclient,它将返回给我一个Mono
我也想做一个
Mono<List<Carparts>> carpartsmono = webclient.get.exchange();
Mono<WorkItemResponse> itemResponse = webclient.get().uri( item.id of carparts)
carpartsMono.flatmap(item -> item.stream().map(t -> t.setWorkItem(webclient.get("uri +
t.getId)).block().getResource().get(0)).collect(Collectors.AsList));
但是我找不到解决办法。
在反应式堆栈中,应尝试使所有代码异步,在您的情况下,其中一种方式如下所示:
Flux<CarPart> carPartFlux=
webClient.get()
.uri("/car-parts/{id}")
.exchange()
.bodyToFlux(CarParts.class)
.map(carPart -> {
return
webclient.get()
.uri("/workitems/" + cartPart.getWorkItemId())
.exchange()
.bodyToMono(WorkItemResponse.class)
.map(workitem -> {
carPart.setWorkItem(workitem);
return carPart;
});
});
现在你可以通过汽车零件的测试了。请尽量避免。尽可能长的阻止调用。若要将其发送到RESTAPI客户端,则直接在RESTAPI响应中传递carPartMono。
上面的代码也是示例,可以根据当前的执行条件进一步改进。比如缓存可以帮助。因此,您可以从这个开始,监控性能并采取下一步措施。
问题内容: 我有表,我想将它做成。我该怎么办? 问题答案: Python清单 list.pop(索引) 删除列表[索引] 这些都将修改您的原始列表。 其他人建议使用切片: 复制清单 可以返回一个子集 另外,如果要执行许多pop(0),则应查看collections.deque 从列表的左端提供更高的性能
问题内容: 鉴于: 我想删除第一个项目中的那个项目。因此,在这种情况下,我们将删除以: 我当前的代码是: 这可行,但是很慢。什么是更好的方法呢? 编辑:我之前没有测试过性能,所以我可能做错了,但是我得到了: 问题答案: 反向删除,就地修改: 就地修改意味着这样做效率更高,因为它不会创建新列表(如列表理解那样)。 由于OP要求提供高效的解决方案,因此这里比较了两个投票最高的答案。 设定 - 清单理解
我正在使用webClient调用endpoint并希望将我得到的响应映射到另一个对象。在映射该对象时,我想对响应的某些参数进行额外调用。 我的第一个调用返回以下对象 我把这种反应描绘成这样: 在getCollectionContent方法中,我迭代设置数组,从响应中提取数据并将其映射到PageContent对象。 如果响应包含类型“String”,我只需将数据添加到消息对象中,并将其添加到页面内容
我试图使用WebClient实现以下场景。使用RestTemplate很琐碎,但我再也做不到了。
问题内容: 假设我有一个数组/要比较的事物列表。在我更熟悉的语言中,我会做类似的事情 这样可以确保我们只比较每对一次。在某些情况下,我正在对列表中包含的一堆对象进行碰撞检测。对于检测到的每个碰撞,将一个描述碰撞的小的“碰撞”对象添加到列表中,然后另一个例程循环循环以解决每个碰撞(取决于两个碰撞对象的性质)。显然,我只想报告每个碰撞一次。 现在,这样做的pythonic方式是什么,因为Python倾
我使用改型2,我正在学习RxJava。我从某处下载了一个项目列表。我想对每个项目进行api调用,并创建扩展项目的新列表。两个调用都返回一个可观察的。它看起来像这样: 详细服务: } 问题是get细节返回一个可观察的,我不能用它来构造扩展项。在rxJava链中,更改get细节调用以返回对象不起作用,我猜是因为它将结果返回给主线程。如何获取对象本身?我尝试了很多其他的方法,但到目前为止都没有成功。