Какова ценность использования PUT / DELETE с Laravel?
Для определения маршрута как ресурса с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:
Вы можете определить маршрут для приема PUT с помощьюRoute::put
и УДАЛИТЬ сRoute::delete.
Input
фасад используетIlluminate\Http\Request::input
типизирующие взаимодействия и вернутсяjson_decode
содержимого для JSON, все параметры GET для запросов GET или все параметры POST в противном случае. Мы должны использовать json или вообще не использовать PUT или DELETE (отлично, потому что запросы HTTP PUT и DELETE не поддерживаются повсеместно).Собственные помощники Laravel используют POST для запросов PUT и DELETE, включая_method
в данных, так что маршрутизация может привести в исполнение глаголы.PUT и DELETE предназначены исключительно для создания внешних JSON REST API, доступных для внешних целей, или они служат другой цели? Есть ли какая-то польза от маршрутизации на один и тот же URI с другой конечной точкой, обеспечивающей наличие_method
в$_POST
или JSON?
Предполагается, что PUT и DELETE являются идемпотентами, но реализовано ли это даже в Laravel? Это то, что я должен сделать в моих контроллерах или маршрутизация принудительно это как-то?
По сути, если PUT и DELETE в Laravel функционально идентичны POST, кроме семантики REST и параллельной маршрутизации, когда и почему я должен использовать их поверх POST?