如何在现有的骆驼码头REST路由上添加matchOnUriPrefix?

问题描述 投票:2回答:1

我们已经与Camel 2.23.1和码头一起使用了现有的REST路线。我们根据uri,查询和用户的身份验证将来电重定向到适当的服务器。我们想更一般地处理这个问题。

我们如何修改以下代码来处理以“ / say”为前缀的任何uri?

在我们的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语句,它似乎破坏了所有内容,ala

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

我知道这个问题和答案,但是不知道如何将其应用于我的案例:stackoverflow.com/questions/39341784

此外,是否可以将某些传入呼叫与明确定义的uri匹配,例如“ / admin / status”,以及将所有其他uri匹配为“ direct:test”?

java rest apache-camel jetty
1个回答
0
投票

我们最终完全删除了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");
© www.soinside.com 2019 - 2024. All rights reserved.