Как добавить matchOnUriPrefix на существующие маршруты REST Camel Jetty? - PullRequest
2 голосов
/ 06 февраля 2020

У нас есть существующие маршруты REST, работающие с верблюдом 2.23.1 и пристанью. Мы перенаправляем входящие звонки на соответствующий сервер на основе uri, запроса и аутентификации пользователя. Мы хотим обработать это более широко.

Как мы можем изменить следующий код для обработки любого URI с "/ say" в качестве префикса?

В нашем RouteBuilder:

    RestConfigurationDefinition rConfig = restConfiguration()
            .component("jetty")          
            .port(webserverPort)
            .contextPath("/")
            .bindingMode(RestBindingMode.off)
            .enableCORS(true)
            .dataFormatProperty("prettyPrint", "true");
    rest("/say")
          .get().to("direct:test");
    from("direct:test")
            .bean(RouteRest.class, "getTestURI(*,*)")
            .to("mock:output");

Мы попытались добавить свойство в restConfiguration, ala

.componentProperty("matchOnUriPrefix", "true");

Мы попытались добавить то же свойство в определение маршрута отдыха, ala

rest("/bye?matchOnUriPrefix=true")

Мы попытались создать новое утверждение from, которое, кажется, ломает все, аля

from("jetty://0.0.0.0:8123/now?matchOnUriPrefix=true").to("direct:test");

Я знаю об этом вопросе и ответе, но не знаю, как применить его к моему делу: stackoverflow.com / questions / 39341784

Кроме того, возможно ли сопоставить некоторые входящие вызовы с явно определенными URI, такими как "/ admin / status", и все другие URI с "direct: test"?

1 Ответ

0 голосов
/ 04 марта 2020

В итоге мы полностью удалили restConfiguration () и настроили конечные точки индивидуально, что в любом случае соответствует нашим расширяющимся требованиям. Наша первоначальная функция restConfiguration () ограничивала сообщения, которые могли получить сами конечные точки. Возможно, мы могли бы изменить restConfiguration напрямую, чтобы обеспечить большую гибкость, включая удаление .contextPath("/"). Это напрямую позволило работать следующему коду:

from("jetty:http://{{ip}}:{{port}}?matchOnUriPrefix=true")
        .bean(RestForward.class, "checkUserAuth(*)")
        .bean(RestForward.class, "checkDevice(*)")
        .bean(RestForward.class, "forward(*,*)")
        .to("mock:output");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...