本處以apache爲例,查看apache的conf目錄下httpd.conf,找到下面的代碼php
LoadModule rewrite_module modules/mod_rewrite.so
將其前面的#去掉,若是沒有找到則添加進去。html
找到一下代碼數據庫
<Directory "C:/phpStudy/Apache/cgi-bin"> AllowOverride All Options None Require all granted </Directory>
將本來的AllowOverride None改成AllowOverride All。apache
而後在站點根目錄下建立一個.htaccess文件,內容以下:api
.htaccess數組
此處再也不贅述yii2的配置,若是須要能夠看YII2實戰手冊。瀏覽器
(1)新建modules文件夾,實行api接口版本控制。例如V1版本、V2版本……服務器
在v1文件夾下新建controllers文件夾(控制器)、models文件夾(模型)、Module.php配置文件。yii2
Module.php文件以下:架構
1 <?php 2 namespace api\modules\v1; 3 4 class Module extends \yii\base\Module 5 { 6 7 public $controllerNamespace = 'api\modules\v1\controllers'; 8 9 public function init() 10 { 11 parent::init(); 12 } 13 }
第2行和第7行隨版本擴展而變化(v1->v2...)。
(2)配置config文件夾下的main.php文件
main.php
注意10~17行、20~44行的組件配置,相信你們仔細閱讀就能明白,此處再也不贅述原理,請你們尤爲注意33~35行的代碼,此處表示的是v1/site控制器,隨着接口控制器的增多,能夠直接在數組中增長便可。本文力求快速配置出RESTful架構的實現。
(3)v二、v3表示之後的版本變化,配置都相似於v1文件夾。
數據庫準備一個名爲mxq_guide的數據表
CREATE TABLE `mxq_guide` ( `id` int(11) NOT NULL AUTO_INCREMENT, `imgurl` varchar(255) DEFAULT NULL COMMENT '圖片路徑', `status` int(11) DEFAULTNULL COMMENT '1啓用 0禁用', `flag` int(11) DEFAULTNULL COMMENT '1安卓 2蘋果', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=24 DEFAULT CHARSET=utf8 COMMENT='APP導航圖';
建立後請注意及時往數據庫添加幾條數據信息。
經過腳手架gii來建立guide.php模型(使用方法請看yii2權威指南)。生成後的文件注意改寫,修改成以下形式以知足RESTful的需求。以後從models文件夾中轉移到v1/models文件夾中,並注意命名空間的修改。
guide.php
SiteController.php
控制器請建立在modules/controllers文件夾下,並注意命名空間的修改。
要注意的是,此處的控制器與普通的控制器繼承Controller不一樣,此處需繼承ActiveController類。
20~30行註釋的代碼是基於RESTful架構的access_token認證,目前還未測試經過,後續補充。
至此,基於YII2的全部配置已基本完成,接下來介紹api接口測試工具及方法。
首先介紹一下postman這款插件,是基於谷歌瀏覽器的一款模擬請求的實用插件。具體使用,在下面測試過程當中涉及截圖,介紹不足之處請見諒,本身也是第一次使用。
推薦使用上面的APP版本,便於後續封裝本身寫好的api接口,下面的是網頁版本。
YII2支持的RESTful有四種請求方式:GET查看信息,POST建立信息,PUT更新信息,DELETE刪除信息。
下面開始演示四種請求數據的方式。(只是截圖演示效果,具體使用還須要你們本身去摸索。)
此處演示的是GET方法請求數據庫的數據。對應的是modules/controllers/SiteController/actionIndex方法。
請你們注意最上面方框內的URL地址,rest默認將控制器進行復數請求http://api.mxq.com/v1/sites,此處就是rest的默認規則。
打*星號位置顯示的是正常的效果,如若出現錯誤,你們能夠去YII權威指南——錯誤檢查錯誤緣由。
YII2的ActiveController默認實現了數據的分頁效果。
此處演示的是POST方法新建數據庫的數據。對應的是modules/controllers/SiteController/actionCreate方法。
若是在數據庫的數據層寫好數據校驗規則,此處提交數據不知足要求的時候就會顯示相應的錯誤。這也是REST的優點之一。好比以下狀況,flag我定義的是int型:
接下來演示的是PUT方法更新數據庫的數據。對應的是modules/controllers/SiteController/actionUpdate方法。
此處請你們再次注意最上面的URL:http://api.mxq.com/v1/sites/15 此處15表明的是數據庫id爲15的數據,表示更新數據庫ID爲15的數據信息。請你們必定注意。RESTful在使用更新和刪除數據操做的時候,id不能一表單的形式提交,必須緊跟在URL以後。
接下來演示的是DELETE方法刪除數據庫的數據。對應的是modules/controllers/SiteController/actionDelete方法。
當返回值爲1的時候表示的就是刪除操做執行成功。具體原理請你們仔細觀察sitecontroller控制器內的函數。
以上就是基於yii2的RESTful的一些簡單介紹、實現方法以及測試結果。有什麼不正確或遺漏的地方,歡迎你們來補充。後續也會在此基礎上進行更新。本人第一次接觸yii2框架和RESTful架構,表述若有不對之處,請你們見諒。
http://www.bubuko.com/infodetail-809844.html