Returns Mono<Void> 方法的 WebFlux 链接
WebFlux Chaining from Method that Returns Mono<Void>
这是我用于删除项目的控制器:
public Mono<ResponseEntity> delete(
@PathVariable(value = "id") String id) {
return itemService.delete(id)
.map(aVoid -> ResponseEntity.ok());
}
itemService.delete(id)
returns Mono<Void>
但是当我成功删除一个项目时,它没有给我响应实体对象。它只有 returns 空白 json.
我好像没有执行map因为delete方法returns Mono<Void>
如何正确执行此操作?
反应流发布者可以发送 3 种类型的信号:值、完成、错误。
A Mono<Void>
publisher is way to signal when an operation is completed - you're not interested in any value being published, you just want to know when the work is done。实际上,您不能发出 Void
类型的值,它不存在。
您正在使用的 map
运算符将发出的值转换为其他值。
所以在这种情况下,地图运算符永远不会被调用,因为没有值被发出。您可以使用以下内容更改您的代码片段:
public Mono<ResponseEntity> delete(
@PathVariable(value = "id") String id) {
return itemService.delete(id)
.then(Mono.just(ResponseEntity.ok()));
}
这是我用于删除项目的控制器:
public Mono<ResponseEntity> delete(
@PathVariable(value = "id") String id) {
return itemService.delete(id)
.map(aVoid -> ResponseEntity.ok());
}
itemService.delete(id)
returns Mono<Void>
但是当我成功删除一个项目时,它没有给我响应实体对象。它只有 returns 空白 json.
我好像没有执行map因为delete方法returns Mono<Void>
如何正确执行此操作?
反应流发布者可以发送 3 种类型的信号:值、完成、错误。
A Mono<Void>
publisher is way to signal when an operation is completed - you're not interested in any value being published, you just want to know when the work is done。实际上,您不能发出 Void
类型的值,它不存在。
您正在使用的 map
运算符将发出的值转换为其他值。
所以在这种情况下,地图运算符永远不会被调用,因为没有值被发出。您可以使用以下内容更改您的代码片段:
public Mono<ResponseEntity> delete(
@PathVariable(value = "id") String id) {
return itemService.delete(id)
.then(Mono.just(ResponseEntity.ok()));
}