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()));
}