Запросы Laravel 11 PUT, PATCH, DELETE возвращают 405 Method Not Allowed, но GET и POST работают нормальноPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Запросы Laravel 11 PUT, PATCH, DELETE возвращают 405 Method Not Allowed, но GET и POST работают нормально

Сообщение Anonymous »

Я работаю над API для проекта Laravel 11 и столкнулся с проблемой, связанной с PUT, PATCH и DELETE. запросы не поддерживаются, и я постоянно получаю следующую ошибку:

Код: Выделить всё

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException
PHP 8.2.24
Laravel 11.19.0
The PUT method is not supported for route /. Supported methods: GET, HEAD.
Однако запросы GET и POST работают отлично. Я проверил конфигурацию сервера: запросы PUT, PATCH и DELETE доходят до сервера правильно. Laravel правильно определяет метод запроса, но я все еще получаю сообщение об ошибке 405 Method Not Allowed.
Маршруты также зарегистрированы правильно, как показано ниже:

Код: Выделить всё

GET|HEAD        api/v2/categories ........................... categories.index › Api\CategoryController@index
POST            api/v2/categories ........................... categories.store › Api\CategoryController@store
GET|HEAD        api/v2/categories/{category} .................. categories.show › Api\CategoryController@show
PUT|PATCH       api/v2/categories/{category} .............. categories.update › Api\CategoryController@update
DELETE          api/v2/categories/{category} ............ categories.destroy › Api\CategoryController@destroy
GET|HEAD        dashboard/categories ............... dashboard.categories › App\Livewire\Dashboard\Categories
GET|HEAD        dashboard/categories/{category}/edit .. categories.edit › App\Livewire\Dashboard\EditCategory
Вот код маршрута, который я использую:

Код: Выделить всё

Route::middleware([ApiTokenMiddleware::class])
->prefix('v2')
->group(function () {

Route::put('/categories/{category}', [CategoryController::class, 'update']);
});
Что я пробовал:
  • Конфигурация сервера: я проверил и подтвердил Конфигурация сервера
    (Apache/Nginx) поддерживает методы PUT и DELETE.
  • Маршруты Laravel: маршруты правильно зарегистрированы в выходных данных
    php artisan Route:list.
  • Метод запроса: я проверил, что запросы правильно достигают
    сервера с ожидаемыми методами (PUT, PATCH, DELETE).
Тем не менее, я получаю ошибку 405 Method Not Допущенная ошибка. Может ли кто-нибудь помочь мне определить, почему это происходит и как это решить?
# UPDATE 1
Ребята, это это какая-то аномалия! Я уже настроил nginx, изменил настройки Apache и проверил настройки .htaccess. Ничего не помогло. Я решил пойти методом проб и ошибок и в конце концов понял, что запросы PUT проходят нормально. Но вот что мне до сих пор непонятно, так это то, почему их перенаправляют — я пока не разобрался. Проблема точно не в сервере, проверял неоднократно. Проблема в моем блоке кода. Запросы проходят через промежуточное программное обеспечение нормально, но затем происходит что-то странное. Напомним, что у Laravel есть собственное промежуточное программное обеспечение, которое со всем этим справляется.
Итак, я вслепую написал:

Код: Выделить всё

Route::put('api/v2/categories/{id}', function($id) {
echo 'He-He!' . $id;
});
Сначала я отключил защиту CSRF, и все заработало, без перенаправлений и всего такого.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ed-but-get
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»