Apache Верблюд - Как лучше всего справиться с ошибкой 404? - PullRequest
1 голос
/ 06 марта 2020

Я использую 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");

Когда я нажимаю на конечную точку REST запрос типа GET /mysvc/requests/123, я получаю верный ответ Hello World назад .

В случае, когда я попал в неверную конечную точку, такую ​​как GET /mysvc/requests (без предоставления идентификатора), я просто получаю код ответа 404 со следующим телом ответа:

{
  url: "/mysvc/requests",
  status: "404",
  message: "Not Found",
  servlet: "CamelServlet",
}

Я заметил, что в предложении onException нет исключений, и мой ErrorProcessor() также не вызывается. Почему это так?

Как я могу убедиться, что такие ошибки отлавливаются предложением onException?

1 Ответ

0 голосов
/ 12 марта 2020

Хорошо, я предполагаю, что не только ваш onException не вызывается, но и ваш маршрут REST, потому что ваш запрос не соответствует пути (отсутствует идентификатор).

Следовательно, Я предполагаю, что стандартная обработка ошибок дает 404, потому что нет маршрута для ответа на запрос .

Если вы хотите перехватить эти запросы, вы должны создать маршрут, который слушает /mysvc/requests.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...