国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Yii2 基于RESTful架構的 advanced版API接口開發 配置、實現、測試

2019-11-15 02:14:02
字體:
來源:轉載
供稿:網友
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文件,內容如下:

<IfModule mod_rewrite.c>  Options +FollowSymlinks  RewriteEngine On  RewriteCond %{REQUEST_FILENAME} !-d  RewriteCond %{REQUEST_FILENAME} !-f  RewriteRule . index.php</IfModule>
.htaccess

此處不再贅述yii2的配置,如果需要可以看YII2實戰手冊

YII2實際操作:1、配置URL規則及modules

(1)新建modules文件夾,實行api接口版本控制。例如V1版本、V2版本&hellip;…

在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文件

 1 <?php 2 $params = array_merge(require (__DIR__ . '/../../common/config/params.php'), require (__DIR__ . '/../../common/config/params-local.php'), require (__DIR__ . '/params.php'), require (__DIR__ . '/params-local.php')); 3  4 return [ 5     'id' => 'app-api', 6     'basePath' => dirname(__DIR__), 7     'bootstrap' => [ 8         'log' 9     ],10     'modules' => [11         'v1' => [12             'class' => 'api/modules/v1/Module'13         ],14         'v2' => [15             'class' => 'api/modules/v2/Module'16         ]17     ],18     'controllerNamespace' => 'api/controllers',19     'components' => [20         'user' => [21             'identityClass' => 'common/models/User',22             'enableAutoLogin' => false,23             'enablesession' => false,24             'loginUrl' => null25         ],26         'urlManager' => [27             'enablemain.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文件夾中,并注意命名空間的修改。

 1 <?php 2 namespace api/modules/v1/models; 3  4 use Yii; 5 use yii/db/ActiveRecord; 6 use yii/web/IdentityInterface; 7  8 /** 9  * This is the model class for table "{{%guide}}".10  *11  * @property integer $id12  * @property string $imgurl13  * @property integer $status14  * @property integer $flag15  */16 class Guide extends ActiveRecord implements IdentityInterface17 {18 19     public static function findIdentityByAccessToken($token, $type = null)20     {21         return static::findOne([22             'access_token' => $token23         ]);24     }25 26     public function getId()27     {28         return $this->id;29     }30 31     public function getAuthKey()32     {33         return $this->authKey;34     }35 36     public function validateAuthKey($authKey)37     {38         return $this->authKey === $authKey;39     }40 41     public static function findIdentity($id)42     {43         return static::findOne($id);44     }45 46     public static function tableName()47     {48         return '{{%guide}}';49     }50 51     public function rules()52     {53         return [54             [55                 [56                     'imgurl',57                     'status',58                     'flag'59                 ],60                 'required'61             ],62             [63                 [64                     'status',65                     'flag'66                 ],67                 'integer'68             ],69             [70                 [71                     'imgurl'72                 ],73                 'string',74                 'max' => 25575             ]76         ];77     }78 79     public function attributeLabels()80     {81         return [82             'id' => Yii::t('app', 'ID'),83             'imgurl' => Yii::t('app', 'imgurl'),84             'status' => Yii::t('app', 'status'),85             'flag' => Yii::t('app', 'flag')86         ];87     }88 }
guide.php3、創建一個控制器
 1 <?php 2 namespace api/modules/v1/controllers; 3  4 use Yii; 5 use yii/rest/ActiveController; 6 use yii/filters/auth/CompositeAuth; 7 use yii/filters/auth/QueryParamAuth; 8 use yii/data/ActiveDataProvider; 9 10 class SiteController extends ActiveController11 {12 13     public $modelClass = 'api/modules/v1/models/guide';14 15     public $serializer = [16         'class' => 'yii/rest/Serializer',17         'collectionEnvelope' => 'items'18     ];19     20     // public function behaviors()21     // {22     // $behaviors = parent::behaviors();23     // $behaviors['authenticator']
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洛浦县| 白朗县| 南安市| 德清县| 佛冈县| 南皮县| 礼泉县| 连平县| 麟游县| 赞皇县| 新绛县| 济宁市| 龙门县| 中方县| 丰顺县| 清水河县| 玉龙| 平果县| 上饶市| 辽阳市| 乡城县| 增城市| 清河县| 台山市| 马山县| 日照市| 乐山市| 杂多县| 宁城县| 观塘区| 双辽市| 莫力| 清徐县| 邢台市| 西充县| 大庆市| 汉源县| 杭锦后旗| 铁岭市| 社旗县| 彭泽县|