Spring 在将 Mono<Void> 转换为 Mono<Response> 时反应性 API 响应空白 body
Spring Reactive API response blank body while transforming Mono<Void> to Mono<Response>
我有一个 returns Mono 的服务电话。现在,在向用户提供 API 响应时,我想发送一些响应。我尝试使用 flatMap 和地图,但它不起作用。它给了我一个空的 body 作为回应。
这里是代码示例
//Service Call
public Mono<Void> updateUser(....) {
.......... return Mono<Void>...
}
//Rest Controller
@PostMapping(value = "/user/{id})
public Mono<Response> update(......) {
return service.updateUser(....)
.map(r -> new Response(200, "User updated successfully"));
}
当我点击上面的 API 时,它给我一个空的 body 作为回应。谁能帮我在 API 回复中获得 body?
谢谢
如果您希望忽略 Mono
或 Flux
中的 return 值并只触发链中的下一个内容,您可以使用 then
运算符,或 thenReturn
运算符。
不同之处在于 then
采用 Mono
而 thenReturn
采用具体值( 将包含在 Mono
中。
@PostMapping(value = "/user/{id})
public Mono<Response> update(......) {
return service.updateUser(....)
.thenReturn(new Response(200, "User updated successfully"));
}
我有一个 returns Mono 的服务电话。现在,在向用户提供 API 响应时,我想发送一些响应。我尝试使用 flatMap 和地图,但它不起作用。它给了我一个空的 body 作为回应。
这里是代码示例
//Service Call
public Mono<Void> updateUser(....) {
.......... return Mono<Void>...
}
//Rest Controller
@PostMapping(value = "/user/{id})
public Mono<Response> update(......) {
return service.updateUser(....)
.map(r -> new Response(200, "User updated successfully"));
}
当我点击上面的 API 时,它给我一个空的 body 作为回应。谁能帮我在 API 回复中获得 body?
谢谢
如果您希望忽略 Mono
或 Flux
中的 return 值并只触发链中的下一个内容,您可以使用 then
运算符,或 thenReturn
运算符。
不同之处在于 then
采用 Mono
而 thenReturn
采用具体值( 将包含在 Mono
中。
@PostMapping(value = "/user/{id})
public Mono<Response> update(......) {
return service.updateUser(....)
.thenReturn(new Response(200, "User updated successfully"));
}