首页 > 解决方案 > 如何将 ResponseEntity 与 Flux 或 Mono 结合起来进行 CRUD 操作

问题描述

嗨,我正在尝试创建一个带有存储库的 CRUD 控制器,但我找不到任何用作参考的示例。我想在下面做这样的事情。

    @RequestMapping(value = "/api/open/books", method = RequestMethod.GET)
        public ResponseEntity<Flux<Book>> getBooks() {

            Flux<Book> books = bookRepository.findAll();
            // if books is null 
                       return new ResponseEntity<Flux<Book>>(books, HttpStatus.NOT_FOUND);
            // else
                       return new ResponseEntity<Flux<Book>>(books, HttpStatus.OK);
    }

    @RequestMapping(value = "/api/open/books", method = RequestMethod.PUT)
        public ResponseEntity<Mono<Book>> updateBook(@RequestBody Book bookObject) {

            Mono<Book> book = bookRepository.findById(bookObject.getId());
            // if book is null 
                       return new ResponseEntity<Flux<Book>>(books, HttpStatus.NOT_FOUND);
            // else
                       bookRepository.save(book);
                       return new ResponseEntity<Flux<Book>>(books, HttpStatus.OK);
    }

我尝试过这样的事情,但它总是返回 OK,因为 Flux 或 Mono 对象本身不为空,但它的数据为空,我找不到如何检查它。

Flux<Book> books = bookRepository.findAll();
 HttpStatus status = books != null ? HttpStatus.OK : HttpStatus.NOT_FOUND;

标签: javaspring-webflux

解决方案


推荐阅读