我们已经与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”?
我们最终完全删除了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");