入門微信小程式(含實戰) [第七篇] --- 伺服器端介面restful配置

阿北哥ya發表於2017-11-01

說幹我們就幹,老沙灰常高興的開始了,在這一篇老沙將帶著你完成yii2程式的restful配置過程。

RESTful

老沙計劃使用 xgh.nai8.me/xcx 作為介面的基本地址,將來會有比如

類似的url,這樣是符合restful。

為了以後版本化,將每個版本的介面以模組的形式建立,當然建立支援restful和建立普通的模組並沒有差別,使用gii的模組生成即可。

此處省略好幾個字,模組建立完成。

alt
alt

yii2框架內建是支援restful規範的,按照yii2的規則做我們可以輕鬆實現比如資料表資料的獲取、插入、更新、刪除等基礎操作以及登入驗證等功能。

也就是說我省了很多事情~~,當然我們還是需要簡單配置的,這個配置主要是urlManager及模組控制器的繼承問題。

urlManager

如果要實現上面的url樣子,我們必須進行url美化,這需要web伺服器的支援(apache&nginx如何支援url重寫可以參考 速查表),單單這樣還不夠,yii2提供了restful專有的url規範,需要按照它的要求配置。

對於一般的restful規則的yii2路由配置如下圖

alt
alt

紅色框內的代表一個標準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識別,具體見下圖

alt
alt

當然具體如何實現的你可以參考 yii\rest\UrlRule.php 類及yii2的actions函式。

小提示:在兄弟連PHP原創視訊中對這個原理也進行了詳細的解析(《Yii2的RESTful講解》第三節)

配置控制器

urlManager配置完成,接下來就是寫一個控制器了,老沙對此很熟悉,不就是一個繼承問題麼!!!

是的,這是一個繼承問題,如果你想讓yii2支援restful,請將對應控制器繼承到 yii\rest\ActiveController 上,最簡單的一個具有restful資源操作能力的控制器如下圖。

alt
alt

是的,就是這樣,當控制器繼承於 ActiveController 在指定一個$modelClass後,這個控制器就可以對 $modelClass 對應的資料表進行列表、詳情、生成、更新、刪除等操作,而你無需再寫任何對應程式碼,簡單吧~~

這裡要注意幾點

第一:
必須指定$modelClass,每個控制器代表一種資源,隱身就是一個資料表中的資料或你作業系統的檔案云云,總之它是一種資源。

第二:
這裡的AblumController就是urlMananger中的'controller' => 'xcx/album', 控制器的名字於單複數的設定無關。

完事了

簡單配置後,老沙搞定了伺服器端的配置,接下來他計劃使用小程式和yii2實現一個隊相簿列表的功能實現,下一篇告訴你。

相關文章