API介面開發 配置、實現、測試
Yii2 基於RESTful架構的 advanced版API介面開發 配置、實現、測試
環境配置:
開啟伺服器偽靜態
本處以apache為例,檢視apache的conf目錄下httpd.conf,找到下面的程式碼
LoadModule rewrite_module modules/mod_rewrite.so
將其前面的#去掉,如果沒有找到則新增進去。
找到一下程式碼
<Directory "C:/phpStudy/Apache/cgi-bin"> AllowOverride All Options None Require all granted </Directory>
將原本的AllowOverride None改為AllowOverride All。
然後在站點根目錄下建立一個.htaccess檔案,內容如下:
.htaccess此處不再贅述yii2的配置,如果需要可以看YII2實戰手冊。
YII2實際操作:
1、配置URL規則及modules
(1)新建modules資料夾,實行api介面版本控制。例如V1版本、V2版本……
在v1資料夾下新建controllers資料夾(控制器)、models資料夾(模型)、Module.php配置檔案。
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)v2、v3表示以後的版本變化,配置都類似於v1資料夾。
2、建立一個模型
資料庫準備一個名為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.php3、建立一個控制器
SiteController.php控制器請建立在modules/controllers資料夾下,並注意名稱空間的修改。
要注意的是,此處的控制器與普通的控制器繼承Controller不同,此處需繼承ActiveController類。
20~30行註釋的程式碼是基於RESTful架構的access_token認證,目前還未測試通過,後續補充。
至此,基於YII2的所有配置已基本完成,接下來介紹api介面測試工具及方法。
RESTful的測試工具PostMAN:
首先介紹一下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架構,表述如有不對之處,請大家見諒。
標籤: PHP, RESTful, YII2, POSTMAN
轉載請註明本文地址: API介面開發 配置、實現、測試