說幹咱就幹,老沙灰常高興的開始了,在這一篇老沙將帶着你完成yii2程序的restful配置過程。php
老沙計劃使用 xgh.nai8.me/xcx 做爲接口的基本地址,未來會有好比html
相似的url,這樣是符合restful。nginx
爲了之後版本化,將每一個版本的接口以模塊的形式創建,固然創建支持restful和創建普通的模塊並無差異,使用gii的模塊生成便可。web
此處省略好幾個字,模塊創建完成。apache
yii2框架內置是支持restful規範的,按照yii2的規則作咱們能夠輕鬆實現好比數據表數據的獲取、插入、更新、刪除等基礎操做以及登陸驗證等功能。小程序
也就是說我省了不少事情~~,固然咱們仍是須要簡單配置的,這個配置主要是urlManager及模塊控制器的繼承問題。服務器
若是要實現上面的url樣子,咱們必須進行url美化,這須要web服務器的支持(apache&nginx如何支持url重寫能夠參考 速查表),單單這樣還不夠,yii2提供了restful專有的url規範,須要按照它的要求配置。restful
對於通常的restful規則的yii2路由配置以下圖yii2
紅色框內的表明一個標準restful中控制器路由規則,綠色框內是你必需要填寫的,其餘的except、pluralize、extraPatterns非必填,具體使用場景之後用到會說明。框架
這裏要說明的參數是pluralize,在restful使用上一直存在兩種觀點,就是對於資源在url上的表現應該是單數仍是複數問題,yii2默認是複數形式,若是你想使用單數能夠將pluralize設置爲false便可。
在pluralize=false的狀況下url是相似於 GET xgh.nai8.me/xcx/album 的樣子。
在咱們設置了urlManager後,yii2就變得智商滿滿了,當過來一個 GET xgh.nai8.me/xcx/albums 請求後,yii2知道這是一個要獲取資源結果集的請求,則會去調用xcx模塊下的album控制器的actionIndex,以此類推yii2提供了不少個內置的action識別,具體見下圖
固然具體如何實現的你能夠參考 yii\rest\UrlRule.php 類及yii2的actions函數。
小提示:在兄弟連PHP原創視頻中對這個原理也進行了詳細的解析(《Yii2的RESTful講解》第三節)
urlManager配置完成,接下來就是寫一個控制器了,老沙對此很熟悉,不就是一個繼承問題麼!!!
是的,這是一個繼承問題,若是你想讓yii2支持restful,請將對應控制器繼承到 yii\rest\ActiveController 上,最簡單的一個具備restful資源操做能力的控制器以下圖。
是的,就是這樣,當控制器繼承於 ActiveController 在指定一個$modelClass後,這個控制器就能夠對 $modelClass 對應的數據表進行列表、詳情、生成、更新、刪除等操做,而你無需再寫任何對應代碼,簡單吧~~
這裏要注意幾點
第一:
必須指定$modelClass,每一個控制器表明一種資源,隱身就是一個數據表中的數據或你操做系統的文件云云,總之它是一種資源。
第二:
這裏的AblumController就是urlMananger中的'controller' => 'xcx/album', 控制器的名字於單複數的設置無關。
簡單配置後,老沙搞定了服務器端的配置,接下來他計劃使用小程序和yii2實現一個隊相冊列表的功能實現,下一篇告訴你。