Leo*_*ley 5 spring flux spring-boot project-reactor spring-webflux
我有一个 Web 服务,我正在尝试使用新的 Spring 5 WebClient 来使用它。
\n\n# GET /orders/\n[\n { orderId: 1, ...\xc2\xa0},\n { orderId: 1, ...\xc2\xa0}\n]\nRun Code Online (Sandbox Code Playgroud)\n\n以及调用的java代码
\n\n// Java\nFlux<Order> ordersStream = webClient.get()\n .uri("/orders/")\n .exchange()\n .flatMap(response -> response.bodyToFlux(Order.class));\nRun Code Online (Sandbox Code Playgroud)\n\n来自 Web 服务的响应是分页的,因此不直接包含项目列表,如上例所示。
\n\n看起来像这样
\n\n# GET /orders/\n{\n "error": null,\n "metadata": {\n "total": 998,\n "limit": 1000,\n "offset": 0\n },\n "data": [\n { orderId: 1, ... },\n { orderId: 2, ... },\n ]\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我怎样才能获得子"data"密钥Flux<Order>?
创建一个包装类并转换包装器.data为通量。
但现在我们需要立即反序列化整个响应,可能会耗尽内存。
\n\n// Java\nFlux<Order> ordersStream = webClient.get()\n .uri("/orders/")\n .exchange()\n .flatMap(response -> response.bodyToMono(PageWrapper.class))\n .flatMapMany(wrapper -> Flux.fromIterable(wrapper.data));\nRun Code Online (Sandbox Code Playgroud)\n\n有没有更好的办法?
\n| 归档时间: |
|
| 查看次数: |
3000 次 |
| 最近记录: |