尝试为 API 练习响应式(Reactive)编码,但我很难理解在使用 flatMap()
时我做错了什么和map()
转换到 ResponseEntity
目的。该错误提到代码返回 Mono<Object>
并且不能被类型转换/转变为 Mono<ResponseEntity<>>
.
Public Mono<ResponseEntity<?> deleteEndpoint(String someId) {
return db.existsById(someId).flatMap(exists -> {
if (!exists) return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
else {
Mono<Boolean> deletedStuff1 = someFunct();
Mono<Boolean> deletedStuff2 = anotherFunct();
Mono<Tuple2<Boolean, Boolean>> deletedStuff = Mono.zip(deletedStuff1, deletedStuff2);
return deletedStuff.then(Mono.just(ResponseEntity.status(NO_CONTENT).build());
}
});
}
感谢所有帮助
最佳答案
来自 .flatMap()
您必须返回Publisher
,不是实际物体
在此 if 语句中,您返回 ResponseEntity
而不是Mono<ResponseEntity>
所以,用 Mono 包裹它
if (!exists) {
return Mono.just(ResponseEntity.status(HttpStatus.BAD_REQUEST).build());
} else {
// ...
关于java - 映射时返回 Mono<Object> 而不是 Mono<ResponseEntity> (Java 8),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75025066/