我使用 Apache Camel 与 Spring Boot 和 Jetty 作为嵌入式服务器。
我有一个使用以下路由定义的 RouteBuilder:
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 端点时,我收到了有效的响应 Hello World
。
如果我遇到错误的端点,如 GET/mysvc/requests
(未提供 ID),我只需得到一个响应代码 404
以及以下响应正文:
{
url: "/mysvc/requests",
status: "404",
message: "Not Found",
servlet: "CamelServlet",
}
我注意到 onException
子句没有捕获任何异常,并且我的 ErrorProcessor()
也没有被调用。为什么会这样?
如何确保此类错误被 onException
子句捕获?
最佳答案
好吧,我认为不仅您的 onException
没有被调用,而且您的 REST 路由也没有被调用,因为您的请求与路径不匹配(缺少 ID)。
因此,我假设标准错误处理会返回 404,因为没有路由来应答请求。
如果您想捕获这些请求,则必须创建一个监听 /mysvc/requests
的路由。
关于java - Apache Camel - 处理 404 错误的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60556284/