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&bridgeEndpoint=true" method="">
<description>Default GET method</description>
<route>
...
</route>
</get>
参数 matchOnUriPrefix=true&bridgeEndpoint=true 成功了。
我正在使用 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&bridgeEndpoint=true" method="">
<description>Default GET method</description>
<route>
...
</route>
</get>
参数 matchOnUriPrefix=true&bridgeEndpoint=true 成功了。