Spring Boot中怎么利用RxJava构建响应式REST API
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这期内容当中小编将会给大家带来有关Spring Boot中怎么利用RxJava构建响应式REST API,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。响应式REST
千家信息网最后更新 2025年01月23日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安全错误
数据库的锁怎样保障安全
网络技术运维合同
网络安全宣传周启动时间
数据库系统安全包含那些
网络安全与信息安全研究
2021全国网络安全高考
dns服务器更换360
禅道软件开发管理
哪里能看到网络安全电视
虚拟机网络安全视频
pg数据库符号
海光服务器如何开虚拟化
乌镇互联网大会盘点黑科技
网络安全焦点网
软件开发方面的证书有哪些
河西区网络技术创造辉煌
vb 还原数据库
网络技术股票走势
PUBMED数据库考试用笔
企业用电量查询数据库介绍
南安市网络安全检查
软件开发实践日志
斗量网络技术
软件开发过程如何保证软件质量
鸿蒙 软件开发 用什么语言
vb 还原数据库
软件开发注册公司需要多少钱
衢州 软件开发
迪茉互联网科技
荆门定制软件开发方案
计算机网络安全论文500