この記事では、Apache を例として取り上げます。Apache の conf ディレクトリにある httpd.conf を確認し、次のコードを見つけます。 リーリー
その前の#を削除し、見つからない場合は追加します。コードを見つける
リーリー
元のAllowOverride NoneをAllowOverride Allに変更します。次に、サイトのルート ディレクトリに次の内容の .htaccess ファイルを作成します。
85ac288f8cdf15251785b7af9467eee6 オプション +フォローシンボリックリンク リライトエンジンオン RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule .index.php 2071f931c9870be1bebed0bdda8305e7 .htaccess yii2 の設定についてはここでは説明しません。必要に応じて、
YII2 実践マニュアルを参照してください。
YII2の実際の操作:(1) 新しいモジュールフォルダーを作成し、API インターフェースのバージョン管理を実装します。たとえば、V1 バージョン、V2 バージョン...
v1 フォルダーの下に新しいコントローラー フォルダー (コントローラー)、モデル フォルダー (モデル)、および Module.php 設定ファイルを作成します。
Module.php ファイルは次のとおりです:
リーリー
2 行目と 7 行目はバージョン拡張に伴って変更されます (v1->v2...)。(2) configフォルダーにmain.phpファイルを設定します
1 17954d4eff6d7035dbe81c04c7feff9d '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' => null 25 ], 26 'urlManager' => [ 27 'enablePrettyUrl' => true, // 启用美化URL 28 'enableStrictParsing' => true, // 是否执行严格的url解析 29 'showScriptName' => false, // 在URL路径中是否显示脚本入口文件 30 'rules' => [ 31 [ 32 'class' => 'yii\rest\UrlRule', 33 'controller' => [ 34 'v1/site' 35 ] 36 ], 37 [ 38 'class' => 'yii\rest\UrlRule', 39 'controller' => [ 40 'v2/site' 41 ] 42 ] 43 ] 44 ], 45 'log' => [ 46 'traceLevel' => YII_DEBUG ? 3 : 0, 47 'targets' => [ 48 [ 49 'class' => 'yii\log\FileTarget', 50 'levels' => [ 51 'error', 52 'warning' 53 ] 54 ] 55 ] 56 ], 57 'errorHandler' => [ 58 'errorAction' => 'site/error' 59 ] 60 ], 61 'params' => $params 62 ]; main.php
注意10~17行、20~44行的组件配置,相信大家仔细阅读就能明白,此处不再赘述原理,请大家尤其注意33~35行的代码,此处表示的是v1/site控制器,随着接口控制器的增多,可以直接在数组中增加即可。本文力求快速配置出RESTful架构的实现。
(3)v2、v3表示以后的版本变化,配置都类似于v1文件夹。
数据库准备一个名为mxq_guide的数据表
<span>CREATE TABLE `mxq_guide` ( `id` int(</span>11) NOT <span>NULL</span> AUTO_INCREMENT,<span> `imgurl` varchar(</span>255) <span>DEFAULT</span> <span>NULL </span>COMMENT '图片路径'<span>,</span><span> <br /> `status` int(</span><span>11) </span><span>DEFAULT</span><span>NULL</span><span> COMMENT '1启用 0禁用',<br /></span><span> `flag` int(</span><span>11) </span><span>DEFAULT</span><span>NULL</span><span> COMMENT '1安卓 2苹果',</span><span> <br /> PRIMARY </span><span>KEY</span><span> (`id`) <br /> ) ENGINE</span><span>=MyISAM AUTO_INCREMENT=24 </span><span>DEFAULT</span><span> CHARSET=utf8 COMMENT='APP导航图';</span>
创建后请注意及时往数据库添加几条数据信息。
通过脚手架gii来创建guide.php模型(使用方法请看yii2权威指南)。生成后的文件注意改写,修改为如下形式以满足RESTful的需求。之后从models文件夹中转移到v1/models文件夹中,并注意命名空间的修改。
1 7aaece032953de1612ae957fc570e6b2 $トークン 23 ]); 24 } 25 26 パブリック 関数 getId() 27 { 28 戻る $this->id; 29 } 30 31 パブリック 関数 getAuthKey() 32 { 33 return $this->authKey; 34 } 35 36 public function validateAuthKey($authKey) 37 { 38 return $this->authKey === $authKey; 39 } 40 41 パブリック 静的 関数 findIdentity($id) 42 { 43 return static::findOne($id); 44 } 45 46 public static function tableName() 47 { 48 戻る '{{%guide}}'; 49 } 50 51 パブリック 関数 ルール() 52 { 53 戻る [ 54 [ 55 [ 56 'imgurl', 57「ステータス」、 58「旗」 59 ]、 60「必須」 61 ]、 62 [ 63 [ 64「ステータス」、 65「フラグ」 66 ]、 67 '整数' 68 ]、 69 [ 70 [ 71「imgurl」 72 ]、 73 '文字列', 74 '最大' => 255 75 ] 76 ]; 77 } 78 79 public functionattributeLabels() 80 { 81 戻る [ 82 'id' => Yii::t('アプリ', 'ID'), 83 'imgurl' => Yii::t('app', 'imgurl'), 84 'ステータス' => Yii::t('アプリ', 'ステータス'), 85 'フラグ' => Yii::t('アプリ', 'フラグ') 86 ]; 87 } 88 } guide.phpコントローラーはモジュール/コントローラーのファイルの下に作成されており、名前空間の変更に注意してください。
このコントローラーは通常のコントローラーとは異なり、ActiveController クラスを継承する必要があることに注意してください。20 ~ 30 行の登録のコードは RESTful アーキテクチャの access_token 承認に基づいており、現在は通過せず、その後継続的に充電されます。
ここまでで、YII2 に基づくすべての構成が基本的に完了しました。次に、API インターフェイスのテスト ツールと方法を説明します。RESTfulな测试ツールPostMAN: このセクションは、具体的には、次の試行中に図を参照して、不足の指示を提示するためのアプリケーションです。
この例では、GET メソッドがデータベースのデータを要求します。対応するのは、モジュール/コントローラー/SiteController/actionIndex メソッドです。
最上部の URL に注意してください。残りの承認はコントローラーに数要求 http://api.mxq.com/v1/sites を実行させます。ここは残りの承認です。打*星号の位置が表示されることは、通常の効果であり、例えば、問題が発生した場合、大家は、
YII威嚇南 — 問題の原因を探索することができます。
YII2 の ActiveController はデータの分割効果を実現します。この例では、POST メソッドがデータベースを新規作成するデータが示されています。対応するのは、モジュール/コントローラー/SiteController/actionCreate メソッドです。 次のような場合、フラグは、データ チェックの要求を満たしていない場合に、データベースのデータ層に書き込まれている場合に、対応する問題を示す可能性があります。
次に、データベースのデータを更新する PUT メソッドが示されます。対応するのは、モジュール/コントローラー/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 アーキテクチャに触れるのは初めてです。説明に間違いがある場合はご容赦ください。