Apache Camel 的默认路由

Default route for Apache Camel

我正在使用 Apache Camel。使用 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 响应,但仍然没有成功。看起来解决方案应该很简单,但还没有找到。

我看到这种默认值只有一个可能的用例:如果您有 多个 URL 相同的功能

如果是这种情况并且您的客户不想或不能切换到单个 URL,您仍然可以使用 URL 重写 在传入请求到达您的 Camel 应用程序之前。

如果你想"catch"所有未知的URLs(错误),我想你应该使用标准骆驼错误处理(参见 Error Handler and Exception clause)因为这些 REST DSL 块在内部转换为标准 Camel 路由。

终于找到解决办法了。

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

参数 matchOnUriPrefix=true&bridgeEndpoint=true 成功了。