【问题标题】:How Iterate in Webclient Flux and replace some value如何在 Webclient Flux 中迭代并替换一些值
【发布时间】:2021-05-11 05:46:14
【问题描述】:

我是 WebClient 的新手。我想使用休息服务并替换一些值并返回结果。

这是我从休息服务得到的响应:

[
    {
        "type": "somthing",
        "details": {
            "d1": "va1",
            "d2": "va2",
            "d3": "va3"
        }
    },
    {
     .....
    },
    ...
]

这是我要返回给用户的结果。 (新值是我从用户那里得到的,所以我把它作为参数。)

[
    {
        "type": "somthing",
        "details": {
            "d1": "va1",
            "d2": "va2",
            **"d3": "Replace with new value"**
        }
    },
    {
     .....
    },
    ...
]

Flux<Item> items= webClient.get()
                .uri("------URL------")
                .retrieve()
                .bodyToFlux(Item.class)

上面的代码正确地从 rest 服务返回项目,传统上我可以使用collectList().block() 来获取一个 List 并替换对象内的值并返回它。

我觉得这是一种老式的方式。有没有更好的方法通过使用 WebClient 功能来处理这种情况?

【问题讨论】:

  • 谢谢,我在提问之前使用了 map 但我的错误是我返回了一个新对象,而不是编辑当前对象并返回相同的 obj。

标签: java spring-boot webclient


【解决方案1】:

感谢@michalk,我使用了地图,并且成功了。

Flux<Item> items= webClient.get()
                .uri("------URL------")
                .retrieve()
                .bodyToFlux(Item.class)..map(item-> {
                    item.getDetails().setDThree(request.getValue);
                    return item;
                 });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    • 2023-03-20
    • 2012-06-15
    • 2017-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多