如何在 Webclient Flux 中迭代并替换一些值
How Iterate in Webclient Flux and replace some value
我是 WebClient 的新手。我想使用休息服务并替换一些值和 return 结果。
这是我从休息服务得到的回应:
[
{
"type": "somthing",
"details": {
"d1": "va1",
"d2": "va2",
"d3": "va3"
}
},
{
.....
},
...
]
这就是我要return给用户的结果。 (新值是我从用户那里得到的,所以我把它作为参数。)
[
{
"type": "somthing",
"details": {
"d1": "va1",
"d2": "va2",
**"d3": "Replace with new value"**
}
},
{
.....
},
...
]
Flux<Item> items= webClient.get()
.uri("------URL------")
.retrieve()
.bodyToFlux(Item.class)
上面的代码正确 return 来自其余服务的项目,传统上我可以使用 collectList().block()
获取列表并替换对象内的值和 return 它。
我觉得这是一种老套的方式。有没有更好的方法通过使用 WebClient 功能来处理这种情况?
感谢@michalk 我使用了 map 并且它起作用了。
Flux<Item> items= webClient.get()
.uri("------URL------")
.retrieve()
.bodyToFlux(Item.class)..map(item-> {
item.getDetails().setDThree(request.getValue);
return item;
});
我是 WebClient 的新手。我想使用休息服务并替换一些值和 return 结果。
这是我从休息服务得到的回应:
[
{
"type": "somthing",
"details": {
"d1": "va1",
"d2": "va2",
"d3": "va3"
}
},
{
.....
},
...
]
这就是我要return给用户的结果。 (新值是我从用户那里得到的,所以我把它作为参数。)
[
{
"type": "somthing",
"details": {
"d1": "va1",
"d2": "va2",
**"d3": "Replace with new value"**
}
},
{
.....
},
...
]
Flux<Item> items= webClient.get()
.uri("------URL------")
.retrieve()
.bodyToFlux(Item.class)
上面的代码正确 return 来自其余服务的项目,传统上我可以使用 collectList().block()
获取列表并替换对象内的值和 return 它。
我觉得这是一种老套的方式。有没有更好的方法通过使用 WebClient 功能来处理这种情况?
感谢@michalk 我使用了 map 并且它起作用了。
Flux<Item> items= webClient.get()
.uri("------URL------")
.retrieve()
.bodyToFlux(Item.class)..map(item-> {
item.getDetails().setDThree(request.getValue);
return item;
});