2017-10-09 39 views
0

剛剛學習Laravel,發現Laravel的快速入門指南,他們提出了「刪除」的要求,你可以欺騙的方法,如果是「刪除」,而不是做這個GET或POST:在Laravel中使用路由方法欺騙的優勢?

{{ method_field('DELETE') }}

產生這個網站:

<input type="hidden" name="_method" value="DELETE"> 

而在Laravel後端讓我們使用這樣的路由器:

Route::delete('/task/{task}', function (Task $task) { 
    // do something here 
}); 

但問題是,爲什麼當我可以設置成「/任務/刪除」,並在後端使用的動作:

Route::post('/task/delete/{task}', function (Task $task) { 
    // do something here 
}); 

沒有魔法「欺騙」,更一致,所以有什麼理由來欺騙?

回答

3

最大的區別是一個是RESTful,另一個不是。 REST使用請求的方法作爲動詞來描述正在執行的操作的類型。該對象的URI描述了該操作應該採取的資源。 Laravel使用欺騙方法,因爲表單元素不能使用除GET和POST之外的其他方法,而其他客戶機如cURL可以。您不必使用REST方法,特別是如果沒有其他人將連接到您的後端。

+0

我upvoted,因爲這更好地描述了原因(OP要求)比@Matey的答案。路線::資源只是方便。 – Stefan

+1

請參閱[文檔](https://laravel.com/docs/5.5/routing#form-method-spoofing) – Stefan

+0

謝謝你現在感覺更聰明。 :)這也是有用的:https://stackoverflow.com/questions/671118/what-exactly-is-restful-programming – Andrew

2

比較:

Route::post('/task/delete/{task}', '[email protected]'); 
Route::post('/task/put/{task}', '[email protected]'); 
Route::post('/task/post/{task}', '[email protected]'); 
Route::get('task/get/{task}', '[email protected]); 

要這樣:

Route::resource('/task', 'TaskController') 

哪一個看起來更清晰,更有條理,更便於維護你?

+0

好吧我明白了,這些欺騙性的方法是內置於這些其他神奇的路線https://laravel.com/docs/5.5/controllers#resource-controllers – Andrew

+0

顯然看起來比較乾淨,但需要記住/查找添加/自動處理和使用/知道控制器的默認方法名稱,如果你想修改他們做什麼,並使用欺騙,嗯不相信 – Andrew