为了将路线定义为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
定义接受PUT的路由,并使用Route::delete.
Input
外观使用Illuminate\Http\Request::input
代表交互,并将返回json的内容json_decode
,GET请求的所有GET参数或其他所有POST参数。我们必须使用json或者根本不使用PUT或DELETE(很好,因为http PUT和DELETE请求不是普遍支持的。)_method
in the data so that the routing can enforce the verbs。 PUT和DELETE是否仅用于创建外部可访问的json REST API,还是用于其他目的?除了使用不同的端点路由到相同的URI之外是否有一些好处,强制_method
或json中存在$_POST
?
PUT和DELETE应该是幂等的,但这甚至在Laravel中实现了吗?这是我必须在我的控制器中发生的事情,还是路由以某种方式强制执行?
基本上,如果Laravel中的PUT和DELETE在功能上与POST相同,除了REST语义和并行路由之外,我何时以及为什么要在POST上使用它们?
答案 0 :(得分:2)
如果要更新记录,请使用PUT
方法;如果要删除记录,则使用DELETE
方法。
请注意,在资源丰富的控制器中,PUT
和DELETE
方法都指向同一url (resource/{resource})
,因此如果您不将方法与PUT
或{区分开来{1}},这将是一个问题。
答案 1 :(得分:1)
获取:要获取数据,
POST :要提交数据,
输入::要更新数据,
删除:销毁数据