Режим верблюжьего привязки для JSON не работает, не могу распаковать его в POJO - PullRequest
1 голос
/ 06 июня 2019

Я пытаюсь отправить сообщение от остальных API на новый маршрут, и даже если вы получаете запрос в формате JSON на своем REST API, и для привязки задано значение JSON, когда я пересылаю его на новый маршрут, оно будет отображаться как InputStream и мне нужно будет направить его в JSON, чтобы использовать его.

Я уже пытался использовать streamCaching и другие компоненты в RestConfiguration (потребляет, производит, типа, dataType). Также я использую все зависимости в POM.

public void configure() {
    restConfiguration().component("servlet")
            .bindingMode(RestBindingMode.json)
            .skipBindingOnErrorCode(false);

    rest("/resttest")
       .patch("/t1")
            .id("t1")
            .description("t1")
            .consumes("application/json")
            .produces("application/json")
            .param()
                .name("body")
               .type(RestParamType.body)
               .dataType("json")
                .required(true)
            .endParam()
            .to("direct:test2");

Этот маршрут в другом классе:

 from("direct:test2").id("test2")

            .marshal().json(JsonLibrary.Jackson,SomePOJO.class)
            .unmarshal().json(JsonLibrary.Jackson, SomePOJO.class)
            .choice()
            .when(simple("${body.getStatus()} =~ 'Closed'"))
            .....

Я ожидал получить сообщение JSON на маршруте test2, и каким-то образом я получаю InputStream, поэтому сначала мне нужно выполнить маршалинг. Кто-нибудь знает, как я могу заставить REST API переадресовывать меня на маршрутизацию сообщений в формате JSON, а не в виде потока?

1 Ответ

0 голосов
/ 07 июня 2019

Попробуйте:

.convertBodyTo(String.class)

перед вашим демаршем.

...