Я использую Slim 3 Framework в качестве бэкенда и небольшой самописный интерфейс (jQuery). В моем интерфейсе у меня есть команды ajax для вызова моего сервера REST. Теперь я столкнулся с проблемой, что не могу использовать DELETE
на своем клиенте, потому что он не соответствует методу HTTP-запроса (GET
).
405 Method not allowed. Must be one of: GET, PUT
В официальной документации сказано, что по умолчанию это запрещено:
Если ваше приложение Slim Framework имеет маршрут, который соответствует текущему URI HTTP-запроса, но НЕ методу HTTP-запроса, приложение вызывает свой обработчик Not Allowed и возвращает ответ HTTP/1.1 405 Not Allowed HTTP-клиенту.
Теперь я мог бы использовать GET
или PUT
, но это невозможно, потому что у меня уже есть эти маршруты, объявленные для других действий.
Ошибка Slim Application: приложение не может быть запущено из-за следующей ошибки: Тип сведений: FastRoute\BadRouteException Сообщение: Статический маршрут /api/v1/folders/ затенен ранее определенным переменным маршрутом /api/v1/folders/(.*) для метода ПОЛУЧИТЬ
// Folder routes
$this->group('/folders', function () {
$this->get('[/{params:.*}]', 'FolderController:index');
$this->post('', 'FolderController:create');
$this->put('[/{params:.*}]', 'FolderController:update');
$this->delete('/[/{params:.*}]', 'FolderController:delete');
})->add('AuthenticateMiddleware');
Не могли бы вы дать мне совет, как решить эту проблему? Разве это не общая проблема в мире REST, так сказать, потому что я предполагаю, что многие фреймворки действуют как Slim 3 и выдают ошибку 405 Method not allowed
в такой конкретной ситуации, когда вы хотите использовать DELETE
, но не можете, потому что щелчок в браузере это GET
?
DELETE
, чтобы Slim мог вызвать правильный контроллер. Также обратите внимание, что ваш маршрут удаления имеет дополнительный[
- person Alexandru Ungureanu   schedule 25.10.2017[
, он начал работать с моим ajaxDELETE
. Пожалуйста, сделайте небольшой пост, и я приму ваш ответ! Благодарю вас! - person Magiranu   schedule 25.10.2017