Java ApacheCamel-处理404错误的最佳方法是什么?
我使用ApacheCamel和Spring Boot以及Jetty作为嵌入式服务器 我有一个RouteBuilder,它由以下路由定义:Java ApacheCamel-处理404错误的最佳方法是什么?,java,spring-boot,rest,servlets,apache-camel,Java,Spring Boot,Rest,Servlets,Apache Camel,我使用ApacheCamel和Spring Boot以及Jetty作为嵌入式服务器 我有一个RouteBuilder,它由以下路由定义: onException(Exception.class) .handled(true) .process(new ErrorProcessor()); rest("/mysvc/requests/{id}") .consumes("application/json")
onException(Exception.class)
.handled(true)
.process(new ErrorProcessor());
rest("/mysvc/requests/{id}")
.consumes("application/json")
.produces("application/json")
.get()
.to("direct:processMyRequest");
from("direct:processMyRequest")
.log("Hello World");
当我用一个像GET/mysvc/requests/123
这样的请求点击REST端点时,我得到了一个有效的响应helloworld
如果我点击了一个错误的端点,比如GET/mysvc/requests
(没有提供id),我只会得到一个响应代码404
,响应主体如下:
{
url: "/mysvc/requests",
status: "404",
message: "Not Found",
servlet: "CamelServlet",
}
我注意到,onException
子句没有捕获异常,我的ErrorProcessor()
也没有被调用。为什么会这样
如何确保此类错误被
onException
子句捕获?好吧,我假设不仅没有调用onException
,还没有调用REST路由,因为您的请求与路径不匹配(缺少ID)
因此,我假设标准错误处理将返回404,因为没有路径来回答请求
如果你想捕获这些请求,你必须创建一个路由来监听
/mysvc/requests
好吧,我假设不仅你的onException
没有被调用,而且你的REST路由也没有被调用,因为你的请求与路径不匹配(缺少ID)
因此,我假设标准错误处理将返回404,因为没有路径来回答请求
如果您想捕获这些请求,您必须创建一个侦听
/mysvc/requests
的路由。您可以包括错误处理器的代码吗?您可以包括错误处理器的代码吗?