Laravel-RestfulAPI 資源控制器(全面詳解)


前言:RESTful是一種設計思想、一種普遍接受的規范。我們的資源控制器,和RESTful有着莫大的聯系,要理解資源控制器,必須先了解RESTful。

背景介紹

    REST這個詞,是Roy Thomas Fielding在他2000年的博士論文中提出的。

    Fielding是一個非常重要的人,他是HTTP協議(1.0版和1.1版)的主要設計者、Apache服務器軟件的作者之一、Apache基金會的第一任主席。所以,他的這篇論文一經發表,就引起了關注,並且立即對互聯網開發產生了深遠的影響。

    Fielding將他對互聯網軟件的架構原則,定名為REST,即Representational State Transfer的縮寫。我對這個詞組的翻譯是"表現層狀態轉化"。

    如果一個架構符合REST原則,就稱它為RESTful架構。

    要理解RESTful架構,最好的方法就是去理解Representational State Transfer這個詞組到底是什么意思,它的每一個詞代表了什么涵義。如果你把這個名稱搞懂了,也就不難體會REST是一種什么樣的設計。

一、控制器生成

Laravel的資源控制器原生的支持了RESTful架構。其實laravel的資源控制器和其他控制器沒什么直接區別,只是對控制器類的方法和結構略有規定,不過我們並不要手動創建資源控制器,我們可以利用laravel的命令行工具——artisan

laravel框架根目錄下,通過命令行輸入命令

php artisan make:controller TestController  

注意:在laravel5.1中用php artisan生成的控制器會有默認的方法indexcreateshowedit...等等;如果不是使用Restful不需要默認的方法可以在laravel框架根目錄下,通過命令行輸入命令

php artisan make:controller TestController --plain  

laravel5.2以后生成控制器是默認沒有indexcreateshowedit..等幾個方法的,如果想生成默認的方法 可以在laravel框架根目錄下,通過命令行輸入命令

php artisan make:controller TestController --resource  

就可以創建一個名為TestController的資源控制器,文件默認在app/Http/Controllers下。我們打開TestController.php,發現里面已經寫好了許多方法,比如index、create、show等等。分別是什么意思?如何在路由定義才能訪問到?

我們如果要在路由里定義一個資源控制器只需要一條:

Route::resource('/test', 'TestController');  

下面介紹下RESTful的跳轉規則:

請求URL: /test  
請求方式:GET  
默認進入控制器的方法:index()  
一般用於:頁面展示/列表展示

請求URL: /test/create 
請求方式:GET  
默認進入控制器的方法:create()  
一般用於:添加/新建

請求URL: /test  
請求方式:POST  
默認進入控制器的方法:store()

請求URL: /test/{id}/edit  
請求方式:GET  
默認進入控制器的方法:edit($id)
一般用於:修改頁面

請求URL: /test/{id}  
請求方式:PUT  
PUT方法需要定義一個隱藏表單  
<input type="hidden" name="_method" value="put"/>  
默認進入控制器的方法:update($id) 
一般用於:接收修改的方法

請求URL: /test/{id}  
請求方式:GET  
默認進入控制器的方法:show($id)
一般用於:XX詳情 

請求URL: /test/{id}  
請求方式:GET  
默認進入控制器的方法:destroy($id)
一般用於:刪除

大概舉兩條解釋。

我定義了個資源路由

Route::resource('/test', 'TestController');  

當我訪問地址http://www.blog8090.com/test,相當於訪問控制器TestControllerindex方法。

當我訪問地址http://www.blog8090.com/test/create,就會訪問到create方法。

當我通過POST提交數據至地址http://www.blog8090.com/test,相當於由store方法處理。

現在理解了嗎?通過資源控制器,我們很容易實現一個符合RESTful架構的接口,這種很適合作為APP后端開發時使用。這種規范下,不但訪問策略清晰易理解,更容易維護。也使你的架構更為合理和現代化。

簡單舉例如果在路由中全部定義

Route::get('/test', 'TestController');  
Route::post('/test', 'TestController');  
Route::get('/testEdit', 'TestController@edit');  
Route::post('/testUp', 'TestController@up');  
Route::controller('/addTest','TestController');  

Restful寫法(寫一個路由可以包含很多種動作,當然有些特定方法不夠用的時候也得指定方法)會讓臃腫的路由更加簡易

Route::resource('/test', 'TestController');  
Route::resource('/test_blog', 'TestController@blog');  

是不是比較起來要幽雅的很多??

[原文地址](http://www.blog8090.com/)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM