У меня есть простой контроллер отдыха:Managment Ошибки в ControllerAdvice приводит к дублированию в URI и 404
@RestController
@RequestMapping("/api/v1/")
public class OrderController {
@RequestMapping(value = "/orders2", method = RequestMethod.POST)
public OrderDto createOrder2(@RequestBody OrderDto order) throws Exception {
throw new Exception("Bouh!");
}
}
И я хочу, чтобы управлять исключениями в глобальном масштабе. Из того, что я прочитал это можно сделать что-то вроде:
@ControllerAdvice
public class ErrorController {
@ExceptionHandler(Exception.class)
@ResponseStatus(value = HttpStatus.BAD_REQUEST)
public ErrorDto handleConflict(HttpServletRequest request, Exception e) throws Exception {
ErrorDto o = new ErrorDto();
o.setMessage(e.getMessage());
return o;
}
}
Но когда я делаю пост по моей просьбе, я получаю следующее сообщение об ошибке:
26/10/2016 17:26:08.187 [http-nio-8080-exec-12] WARN o.s.web.servlet.PageNotFound -
No mapping found for HTTP request with URI [/duorest/api/v1/api/v1/orders2]
in DispatcherServlet with name 'rest'
Я не знаю, почему Ури перейти к/duorest/апи/v1/API/v1/orders2
Некоторые факты:
- Я проверил в отладке, мой код выполняется
- Если переместить метод в контроллере покоя, я не получаю сообщение об ошибке, и что я ожидаю (мой ErrorDto объект)
- Spring Framework версии 4.3.3.RELEASE
- Spring -data-rest-webmvc версия 2.5.4.RELEASE
У кого-нибудь уже была эта проблема? Или какой-нибудь намек?
Я знал, что это было что-то незначительное, вот и все, отсутствует аннотация! – wishper
Конечно, всегда что-то второстепенное мы пропускаем большую часть времени :). Хороший мой ответ помог вам –