Access Post метод json RequestBody параметры в WebFlux реактивного программирования - PullRequest
0 голосов
/ 31 марта 2019

Как получить доступ к параметрам RequestBody типа Mono.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 Ответ

1 голос
/ 01 апреля 2019

Не пытайтесь вернуть нереактивный тип, когда ваш ввод предоставляется асинхронно через реактивный тип (Mono), потому что это означает, что вы, вероятно, в конечном итоге заблокируете поток ввода-вывода, в котором обрабатывался запрос, который предполагает неблокирующее поведение контроллеров. Это повышает риск не только блокирования обработки текущего запроса, но и обработки всех других запросов в приложении.

Так что измените тип возвращаемого значения на Mono<ResponseEntity>, переименуйте student в studentMono для ясности и обработайте вашего ученика в map (или, возможно, flatMap, если у вас есть применяемые асинхронные преобразования):

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