java - Apache Camel - 处理 404 错误的最佳方法是什么?

标签 java spring-boot rest servlets apache-camel

我使用 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/

相关文章:

c# - RestSharp 简单完整示例

java - 如何将带连字符的 mysql 枚举类型映射到 JPA 实体?

java - 如何在 JUnitParams 参数提供程序中使用 Mockito stub ?

postgresql - Spring-JPA 可以与 Postgres 分区一起使用吗?

java - JAX-RS/REST 资源究竟是什么?

java - 在使用 HttpClient 进行抢占式身份验证时正确使用 HttpRequestInterceptor 和 CredentialsProvider

java - 从服务器向所有连接的客户端显示在线用户

java - 什么可能导致此异常?

java - 我们可以使用 Spring Boot 对 Nodejs 应用程序进行身份验证吗?

java - 如何在hibernate中设置第n页的权限和子权限?