Spring Boot中怎么利用RxJava构建响应式REST API
发表于:2025-02-24 作者:千家信息网编辑
千家信息网最后更新 2025年02月24日,这期内容当中小编将会给大家带来有关Spring Boot中怎么利用RxJava构建响应式REST API,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。响应式REST
千家信息网最后更新 2025年02月24日Spring Boot中怎么利用RxJava构建响应式REST API
这期内容当中小编将会给大家带来有关Spring Boot中怎么利用RxJava构建响应式REST API,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
响应式REST API
构建一个只包含作者和书籍的简单CRUD
响应式REST API
。这些是端点:
[POST] /api/authors → 添加作者
[POST] /api/books → 添加书籍
[PUT] /api/books/{bookId} → 根据书籍id更新书籍信息
[GET] /api/books?limit={limit}&page={page} → 分页获取书籍列表
[GET] /api/book/{bookId} → 根据书籍id获取书籍详细信息
[DELETE] /api/book/{bookId} → 删除书籍
3.依赖
打开pom.xml并添加如下依赖项。
org.springframework.boot spring-boot-starter-web 2.1.5.RELEASE org.springframework.boot spring-boot-starter-data-jpa 2.1.5.RELEASE io.reactivex rxjava 1.3.8 io.reactivex rxjava-reactive-streams 1.2.1 com.h3database h3 1.4.199 org.projectlombok lombok true 1.18.8 org.springframework.boot spring-boot-starter-test 2.1.5.RELEASE test org.mockito mockito-core 2.25.0 test
备注: 请记住,您必须添加第19-23行依赖项。如果您不添加该依赖项,那么每次您点击响应式API时都会得到HttpMediaNotAcceptableException
。如您所见,我还添加了mockito
作为单元测试中mock对象的依赖项。但是我将在另一篇文章中讨论单元测试。
4.服务层
对于服务层,返回值不仅仅是常规数据类型,而是我将它们封装在RxJava
的Single
(单一)数据类型中。例如,下面的代码处理新书的添加。
@Override public SingleaddBook(AddBookRequest addBookRequest) { return saveBookToRepository(addBookRequest); } private Single saveBookToRepository(AddBookRequest addBookRequest) { return Single.create(singleSubscriber -> { Optional optionalAuthor = authorRepository.findById(addBookRequest.getAuthorId()); if (!optionalAuthor.isPresent()) singleSubscriber.onError(new EntityNotFoundException()); else { String addedBookId = bookRepository.save(toBook(addBookRequest)).getId(); singleSubscriber.onSuccess(addedBookId); } }); } private Book toBook(AddBookRequest addBookRequest) { Book book = new Book(); BeanUtils.copyProperties(addBookRequest, book); book.setId(UUID.randomUUID().toString()); book.setAuthor(Author.builder() .id(addBookRequest.getAuthorId()) .build()); return book; }
正如您所看到的,addBook
方法的返回值是一个封装在RxJava
中的字符串。
5.web层
@PostMapping( consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE ) public Single> addBook(@RequestBody AddBookWebRequest addBookWebRequest) { return bookService.addBook(toAddBookRequest(addBookWebRequest)) .subscribeOn(Schedulers.io()) .map(s -> ResponseEntity.created(URI.create("/api/books/" + s)).body(BaseWebResponse.successNoData())); } private AddBookRequest toAddBookRequest(AddBookWebRequest addBookWebRequest) { AddBookRequest addBookRequest = new AddBookRequest(); BeanUtils.copyProperties(addBookWebRequest, addBookRequest); return addBookRequest; }
上述就是小编为大家分享的Spring Boot中怎么利用RxJava构建响应式REST API了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
书籍
作者
信息
内容
单元
数据
篇文章
类型
分析
封装
服务
测试
不仅仅
专业
中小
代码
内容丰富
备注
字符
字符串
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
学校国家网络安全宣传周美篇
金融网络安全宣传工作
软件开发最火的方向2019
服务器需要关机休息
江苏工业软件开发价格表
戴尔刀片式服务器
为什么数据库都是mysql
湖南便民平台软件开发系统
scp 服务器到本地
数据库怎么上参考文献
网络安全 防御 纵深
windos软件开发工具包
公网访问树莓派服务器
本地数据库哪个牌子好
浙江工业软件开发怎么样
百度云服务器异常稍后再试
宣传部门加强信息网络安全
关闭dhcp服务器
镇江代驾app软件开发
网络安全为主题的书法作品
2021全国网络安全高考
企业运用数据库案例
840d软件开发
淄博ios软件开发公司有哪些
大学计算机网络技术成绩单
小学生网络安全的公益广告
太原金腾网络技术有限公司
ibm服务器管理卡配置
网络安全的四格漫画作品
深信服软件开发面试经验