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<ResponseEntity>
,将student
重命名为studentMono
以清楚起见,并在map
中处理您的学生(如果您要应用异步转换,则可能是flatMap
):
return studentMono.map(student -> ResponseEntity.ok(student.getName()));
【讨论】:
非常感谢西蒙,现在说得通了。只是想学习这种新的编程方式……我还看了你的视频“Reactor in Action - Simon Baslé, Victor Grazi”也不错……愿原力与我们同在……:)以上是关于webflux响应式编程中访问Post方法json RequestBody参数的主要内容,如果未能解决你的问题,请参考以下文章