如何解决带有 Spring WebFlux 的复杂返回类型,稍后异步返回响应状态、标头和正文
背景
在 Spring Boot 和项目 Reactor 的 WebFlux 中使用 API-First 设计。值得庆幸的是,Open API Generator Project(撰写本文时 Gradle 为 5.0.1 版)将仅从开放 API 规范生成 WebFlux 反应式接口,该规范返回典型 RESTful VERB 操作的签名,如下所示:
返回签名
它们首先异步提供响应状态和标头,然后是响应正文,也是异步的,其次。
Mono<ResponseEntity<Flux<UserDTO>>> getAllUsers
Mono<ResponseEntity<UserDTO>> getUserById
Mono<ResponseEntity<Void>> updateUser
注意:Spring 团队提供了一些有用的文档,展示了 WebFlux Response Entity Response options。
注意:接口代码生成是通过 Mustache 模板管理的,所以如果这不是一个好的做法,我可以覆盖并做出贡献
问题
您是否希望典型代码大致如下所示:
@Override
public Mono<ResponseEntity<Flux<UserDTO>>> getAllUsers(@Min(0) @Valid Integer offset,@Min(20) @Max(100) @Valid Integer limit,ServerWebExchange exchange) {
return Mono.just(new ResponseEntity<>(userService.findAllUsers(offset,limit),HttpStatus.OK));
}
使用这种方法是否需要您在发送正文之前知道状态/标头,即在您甚至检索正文的数据(或执行其他 abritrary 逻辑)之前?问题是数据检索或定义的逻辑可能需要更改消费者的状态或标题?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。