webflux响应式编程中访问Post方法json RequestBody参数

Posted

技术标签:

【中文标题】webflux响应式编程中访问Post方法json RequestBody参数【英文标题】:Access Post method json RequestBody parameters in webflux reacive programming 【发布时间】:2019-08-22 00:57:48 【问题描述】:

如何访问 Mono 类型的 RequestBody 参数。 Spring Boot Webflux 反应式。

我想返回一个 ResponseEntity 而不是 Mono。

@RequestMapping(value = "/poststudentdata", method = RequestMethod.POST, headers="content-type=application/json")
public ResponseEntity<String> poststudentData(@Valid @RequestBody Mono<Student> student, BindingResult bindingResult) 

    // How can i access student.getName() etc.... RequestBodt parameters
    // Not able to access as have declared Student as Mono.

【问题讨论】:

【参考方案1】:

当您的输入通过响应式类型 (Mono) 异步提供时,不要尝试返回非响应式类型,因为这意味着您最终可能会阻塞处理请求的 IO 线程,它假设控制器的非阻塞行为。这带来了不仅会阻塞当前请求的处理,而且会阻塞应用程序中所有其他请求的风险。

因此,将返回类型更改为Mono&lt;ResponseEntity&gt;,将student 重命名为studentMono 以清楚起见,并在map 中处理您的学生(如果您要应用异步转换,则可能是flatMap):

return studentMono.map(student -> ResponseEntity.ok(student.getName()));

【讨论】:

非常感谢西蒙,现在说得通了。只是想学习这种新的编程方式……我还看了你的视频“Reactor in Action - Simon Baslé, Victor Grazi”也不错……愿原力与我们同在……:)

以上是关于webflux响应式编程中访问Post方法json RequestBody参数的主要内容,如果未能解决你的问题,请参考以下文章

自学Spring WebFlux

SpringBoot使用WebFlux响应式编程操作数据库

WebFlux响应式编程

Kotlin结合Spring WebFlux实现响应式编程

Java响应式编程Springboot WebFlux基础与实战

Spring Boot (十四): 响应式编程以及 Spring Boot Webflux 快速入门