Для определения маршрута в качестве ресурса с ресурсом Route::resource , документы указывают:
Verb Path Action Route Name ------------------------------------------------------------------- GET /resource index resource.index GET /resource/create create resource.create POST /resource store resource.store GET /resource/{resource} show resource.show GET /resource/{resource}/edit edit resource.edit PUT/PATCH /resource/{resource} update resource.update DELETE /resource/{resource} destroy resource.destroy
в соответствии с типичным REST CRUD, поэтому PUT / PATCH используется для действий обновления и DELETE для уничтожения действий. Я бы подумал, что он предназначен для определения типичного взаимодействия ресурсов, даже если вручную определять мои собственные маршруты и действия контроллера.
Вот суть того, что я понимаю об этих взаимодействиях с Laravel:
Route::put и DELETE с помощью Route::delete. Input фасад использует Illuminate\Http\Request::input типизирующие взаимодействия и вернет json_decode содержимого для json, все параметры GET для запросов GET или все параметры POST в противном случае. Мы должны использовать json или вообще не использовать PUT или DELETE вообще (отлично, потому что запросы HTTP PUT и DELETE не поддерживаются повсеместно). _method в данных, так что маршрутизация может обеспечивать соблюдение глаголов . Являются ли PUT и DELETE исключительно там, чтобы создавать API-интерфейсы REST, доступные извне, или они служат другой цели? Есть ли какая-то польза от маршрутизации к одному и тому же URI с другой конечной точкой, обеспечивающей наличие _method в $_POST или json?
PUT и DELETE должны быть идемпотентными, но разве это даже реализовано в Laravel? Это что-то, что я должен совершить в своих контроллерах, или же такая маршрутизация навязывает это так или иначе?
По сути, если PUT и DELETE в Laravel функционально идентичны POST, кроме семантики REST и параллельной маршрутизации, когда и почему я должен использовать их через POST?
Вы используете метод PUT когда хотите обновить запись, и вы используете метод DELETE когда хотите удалить запись.
Обратите внимание, что в находчивом контроллере оба метода PUT и DELETE направлены на один и тот же url (resource/{resource}) , поэтому, если вы не различаете метод с PUT или DELETE , это будет проблемой.