Маршрут по умолчанию для Apache Верблюд - PullRequest
0 голосов
/ 31 января 2020

Я использую Apache Верблюд. Используя XML DSL, я имею в виду что-то вроде

<rests id="rests" xmlns="http://camel.apache.org/schema/spring">
    <rest id="rest-custom">
        <get uri="my_method" method="">
            <description>...</description>
            <param name="..." ... />
            <route>
                <process ref="..." />
                <to uri="..." />
            </route>
        </get>

        <post uri="another_method" method="" >
            <description>...</description>
            <param name="..." .../>
            <route>
                <process ref="..." />
                <to uri="..." />
            </route>
        </post>
...

Так что, если я хочу новый маршрут, я просто добавлю новый <get> или <post>, и он отлично работает.

Но Теперь я хочу добавить метод DEFAULT . Я имею в виду что-то вроде <get uri="*"> и <post uri="*"> внизу всей конфигурации. Так что, если мой URL не совпадает ни с одним из списка - он переходит к стандартному, и я могу обработать его с помощью собственного процессора (это поведение, которое я хочу)

Пока я не знаю, как это сделать. Пытался обработать 404 ответа, но все равно безуспешно. Похоже, решение должно быть простым, но пока не могу его найти.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2020

Наконец-то найдено решение.

<get uri="/?matchOnUriPrefix=true&amp;bridgeEndpoint=true" method="">
    <description>Default GET method</description>
    <route>
       ...
    </route>
</get>

Параметры matchOnUriPrefix = true & bridgeEndpoint = true добились цели.

0 голосов
/ 10 февраля 2020

Я вижу только один возможный вариант использования для такого значения по умолчанию: если вы получили несколько URL-адресов для одной и той же функциональности .

Если это так, и ваши клиенты не хотят или невозможно переключиться на один URL, вы все равно можете использовать перезапись URL во входящем запросе до того, как он достигнет вашего приложения Camel.

Если вы хотите "перехватить" все неизвестное URL (ошибки), я думаю, вам следует использовать стандартную обработку ошибок Camel (см. Обработчик ошибок и Исключение ), поскольку эти блоки REST DSL внутренне преобразованы в стандартные маршруты Camel.

...