Camel - перенаправление контента на основе HTTP-запроса - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь использовать верблюда для перенаправления http-запроса на основе содержимого тела запроса.

Я создал конечную точку для получения http-запросов и смог успешно перенаправить свой запрос на другой URL-адрес, используя следующий маршрут;

<route>
    <from uri="servlet:myapptest2?matchOnUriPrefix=true"/>  
    <to uri="http://sampleurl/test?bridgeEndpoint=true&amp;throwExceptionOnFailure=false" />
</route>

Но я не могу найти способ проверить тело http-запроса. Мой HTTP-запрос будет иметь тело JSON, подобное этому;

{
    "testLoginRequest": {
            "sampleData1": [{
                    "key1": "val1",
                    "key2": "val2"          
            }],
            "sampleData2": [{
                    "key1": "val1",
                    "key2": "val2"
            }]
    }
}

Я хочу перенаправить запрос на определенный URL-адрес, если JSON содержит значение «testLoginRequest». Я читал, что это должно быть возможно, как;

from("direct:test"). 
    choice().
    when(body().contains("javainuse1"))
    .to("jms:queue:javainuse1").       
    otherwise().
    to("jms:queue:otherwise");

Поскольку я должен использовать XML DSL, я попытался реализовать следующий маршрут, но, похоже, он не работает;

<route>
    <from uri="servlet:myapptest3?matchOnUriPrefix=true" /> 
    <choice>
        <when>
            <simple>${body} contains 'testLoginRequest' </simple>
            <to uri="http://sampleurlforlogin/test?bridgeEndpoint=true&amp;throwExceptionOnFailure=false" />
        </when>                         
    </choice>
</route>

Следую ли я правильному подходу. Что я здесь не так делаю?

...