Ошибка в Slim 3 из-за несоответствия uri запроса и метода запроса

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


person Magiranu    schedule 25.10.2017    source источник
comment
Возникает ли ошибочный запрос, когда вы нажимаете на ссылку? ‹а›‹/а› ? Метод запроса должен быть DELETE, чтобы Slim мог вызвать правильный контроллер. Также обратите внимание, что ваш маршрут удаления имеет дополнительный [   -  person Alexandru Ungureanu    schedule 25.10.2017
comment
@AlexandruUngureanu У вас орлиный взгляд, потому что после того, как я удалил [, он начал работать с моим ajax DELETE. Пожалуйста, сделайте небольшой пост, и я приму ваш ответ! Благодарю вас!   -  person Magiranu    schedule 25.10.2017


Ответы (1)


Согласно моему комментарию:

Возникает ли ошибочный запрос, когда вы нажимаете на ссылку? <a></a> ? Метод запроса должен быть DELETE, чтобы Slim мог вызвать правильный контроллер. Также обратите внимание, что ваш маршрут удаления имеет дополнительный [

Удачи !

person Alexandru Ungureanu    schedule 25.10.2017