为了使用 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 用于销毁操作。我认为这是为了定义典型的资源交互,即使在手动定义我自己的路由和 Controller 操作时也是如此。
以下是我对这些与 Laravel 交互的理解的核心:
- 您可以定义一个路由,以使用
Route::put
接受 PUT 并使用Route::delete 接受 DELETE。
Input
facade 使用Illuminate\Http\Request::input
典型交互,并将返回 json 内容的json_decode
,所有 GET 参数对于 GET 请求或所有 POST 参数。我们必须使用 json 或实际上根本不使用 PUT 或 DELETE(很好,因为 http PUT 和 DELETE 请求并未得到普遍支持)。- Laravel's own form helpers use POST for PUT and DELETE requests, including a
_method
in the data so that the routing can enforce the verbs .
PUT 和 DELETE 只是为了创建外部可访问的 json REST API 还是用于其他目的?除了路由到具有不同端点的相同 URI,强制在 $_POST
或 json 中存在 _method
之外,还有其他好处吗?
PUT 和 DELETE 应该是幂等的,但这甚至在 Laravel 中实现了吗?这是我必须在我的 Controller 中发生的事情,还是路由以某种方式强制执行的?
本质上,如果 Laravel 中的 PUT 和 DELETE 在功能上与 POST 相同,除了 REST 语义和并行路由之外,我什么时候以及为什么应该在 POST 上使用它们?
最佳答案
更新记录时使用PUT
方法,删除记录时使用DELETE
方法。
请注意,在足智多谋的 Controller 中,PUT
和DELETE
方法都指向同一个url (resource/{resource})
,所以如果不区分方法是PUT
还是DELETE
,就会出问题。
关于php - 在 Laravel 中使用 PUT/DELETE 的值(value)是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20676798/