我在这里看到了几个问题,例如如何调试RESTful服务,其中提到:
不幸的是,相同的浏览器不允许我测试HTTP PUT,DELETE,甚至在某种程度上测试HTTP POST.
我也听说过浏览器只支持GET和POST,来自其他一些来源:
但是,Firefox中的一些快速测试显示发送PUT和DELETE请求按预期工作 - XMLHttpRequest成功完成,并且请求以正确的方法显示在服务器日志中.我是否缺少某些方面,例如跨浏览器兼容性或非明显的限制?
为了将路径定义为资源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
Run Code Online (Sandbox Code Playgroud)
按照典型的REST CRUD,PUT/PATCH用于更新操作,DELETE用于destroy操作.我认为这意味着定义典型的资源交互,即使在手动定义自己的路由和控制器操作时也是如此.
以下是我对与Laravel进行这些交互的理解的核心:
Route::put和DELETE 来定义接受PUT的路径Route::delete.Input门面用Illuminate\Http\Request::input典型化的相互作用,将返回json_decode的JSON的内容,所有的GET GET请求或POST的所有参数,否则参数.我们必须使用json或者根本不使用PUT或DELETE(很好,因为http PUT和DELETE请求不是普遍支持的)._method数据中的a ,以便路由可以强制执行动词.PUT和DELETE是否仅用于创建外部可访问的json REST API,还是用于其他目的?除了使用不同的端点路由到相同的URI,是否存在一些好处,强制存在_methodin $_POST或json?
PUT和DELETE应该是幂等的,但这甚至在Laravel中实现了吗?这是我必须在我的控制器中发生的事情,还是路由以某种方式强制执行?
本质上,如果Laravel中的PUT和DELETE在功能上与POST相同,除了REST语义和并行路由之外,我何时以及为什么要在POST上使用它们?