Webflux主动编程中的Access Post方法json RequestBody参数

时间:2019-03-31 20:44:42

标签: spring-boot spring-webflux project-reactor reactive

如何访问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 个答案:

答案 0 :(得分:1)

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

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

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