Я столкнулся с этой проблемой недавно.Вот несколько моих выводов / комментариев:
Я использую tomcat 7.0.42 с Spring 3.2.2
Следующее сообщение выкладывается в журнал во всех этих случаях.405 Метод «Не разрешен» возвращается клиенту.
org.springframework.web.servlet.PageNotFound - Request method 'DELETE' not supported
- Используемый вами REST URL неверен.Даже если конечной точки нет, вы все равно получаете 405.
- Вы не вошли в систему и не авторизованы для выполнения каких-либо действий, не говоря уже о DELETE
- DELETE на самом деле не существуетподдерживается, потому что нет функции с методом = RequestMethod.GET
- Tomcat блокирует такие операции, как DELETE, PUT и т. д. из-за только для init-параметра readonly, установленного в true
- Метод присутствует,УДАЛЕНИЕ разрешено, все в порядке, за исключением того, что в методе
было исключение необработанного времени выполнения (например, исключение нулевого указателя). За исключением 3 и 4, показанное сообщение и ответ очень вводят в заблуждение.Он отправляет вас в разведочные кроличьи норы, которые в итоге оказываются бесплодными.
В итоге моя проблема заключалась в том, что у нас был такой метод:
public void deleteSomething(HttpServletRequest request, HttpServletResponse response, @PathVariable("id") long id, @RequestParam String objectName);
Это ДОЛЖНО быть так:
public void deleteSomething(HttpServletRequest request, HttpServletResponse response, @PathVariable("id") long id, @RequestParam("objectName") String objectName);
Видите разницу?Это отсутствует ("objectName") после @RequestParam.Он компилируется и отлично работает в STS, но при непосредственном развертывании на сервере Tomcat он не работает.
Спасибо @fmelan за пост выше, потому что он помог нам найти эту маленькую опечатку.
Не похоже, что это была ваша проблема, но для всех, кто застрял, пытаясь понятьпочему DELETE не поддерживается ...