Как упаковать FilePart типа application / json в POJO в весеннем функциональном обработчике конечных точек webflux? - PullRequest
0 голосов
/ 13 февраля 2020

Я получаю многокомпонентный запрос с некоторыми частями, представляющими Json файлы, которые мне нужно преобразовать в POJO, в контроллере на основе аннотаций я мог бы использовать

@RequestPart("person") Person

, чтобы преобразовать эту часть в Person POJO. с функциональными конечными точками я могу получить детали через

request.body(BodyExtractors.toParts())

, но я не могу понять, как собрать соответствующую часть в pojo.

1 Ответ

1 голос
/ 13 февраля 2020

Для этого вы можете использовать Jackson2JsonDecoder в webflux. Простой пример, предполагающий составные данные формы.

return serverRequest
        .multipartData()
        .map(MultiValueMap::toSingleValueMap)
        .map(stringPartMultiValueMap -> stringPartMultiValueMap.get("person"))
        .flatMap(part -> new Jackson2JsonDecoder()
            .decodeToMono(part.content(),
                ResolvableType.forClass(Person.class), null, null)
            .map(o -> (Person) o))
        .flatMap(person -> ServerResponse.ok().body(Mono.just(person), Person.class));
...