刚刚学习Laravel并发现在Laravel的快速入门指南中,他们建议使用“删除”请求,您可以通过执行此操作来欺骗该方法,就好像它是“删除”而不是GET或POST:
<configuration>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Description>${plantcockpit.os.description}</Bundle-Description>
<Import-Package>
org.apache.camel.osgi,
org.MyProj.ManageSQL.Interface.SqlService,
com.fasterxml.jackson.core,
com.fasterxml.jackson.databind.*,
com.fasterxml.jackson.module.jsonSchema.*,
org.apache.commons.net.ftp.*,
*
</Import-Package>
<Export-Package>
org.MyProj.SubModuleC
</Export-Package>
<Private-Package>
org.MyProj.SubModuleC.*,
org.json,
</Private-Package>
<Bundle-Type>???</Bundle-Type>
</instructions>
</configuration>
哪个生成这个html:
{{ method_field('DELETE') }}
在Laravel后端让你使用这样的路由器:
<input type="hidden" name="_method" value="DELETE">
但问题是,为什么我可以将表单的操作设置为'/ task / delete'并在后端使用它:
Route::delete('/task/{task}', function (Task $task) {
// do something here
});
没有魔法'欺骗'且更加一致,所以有任何理由欺骗?
答案 0 :(得分:4)
最大的区别是一个是RESTful而另一个不是。 REST使用请求的方法作为动词来描述正在采取的操作类型。对象的URI描述了应该采取操作的资源。 Laravel使用方法欺骗,因为表单元素不能使用除GET和POST之外的方法,而其他客户端如cURL可以。您不必使用REST方法,特别是如果没有其他人将连接到您的后端。
答案 1 :(得分:2)
比较一下:
Route::post('/task/delete/{task}', 'TaskController@destroy');
Route::post('/task/put/{task}', 'TaskController@update');
Route::post('/task/post/{task}', 'TaskController@store');
Route::get('task/get/{task}', 'TaskController@show);
对此:
Route::resource('/task', 'TaskController')
哪一个看起来更清晰,更有条理,更易于维护?