【问题标题】:Apache Camel - What is the best way to handle a 404 error?Apache Camel - 处理 404 错误的最佳方法是什么?
【发布时间】:2020-06-18 17:30:56
【问题描述】:

我使用带有 Spring Boot 和 Jetty 的 Apache Camel 作为嵌入式服务器。

我有一个使用以下路由定义的 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 子句捕获此类错误?

【问题讨论】:

  • 你能附上ErrorProcessor的代码吗?

标签: java spring-boot rest servlets apache-camel


【解决方案1】:

好吧,我假设不仅没有调用您的onException,而且还没有调用您的 REST 路由,因为您的请求与路径不匹配(缺少 ID)。

因此,我假设标准错误处理开始返回 404,因为没有没有响应请求的路径

如果你想捕获这些请求,你必须创建一个监听/mysvc/requests的路由

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-11
    • 2015-07-28
    • 2015-06-12
    • 2017-11-13
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多