尝试练习 API 的反应式编码,但我很难理解在使用
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 {
// ...