ホームページ  >  記事  >  バックエンド開発  >  RESTful アーキテクチャに基づく Yii2 高度な API インターフェース開発、構成、実装、テスト、yii2restful_PHP チュートリアル

RESTful アーキテクチャに基づく Yii2 高度な API インターフェース開発、構成、実装、テスト、yii2restful_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:53:251436ブラウズ

Yii2 Advanced版 RESTfulアーキテクチャに基づくAPIインターフェース開発 設定、実装、テスト、yii2restful

環境設定:

サーバーの擬似静的を有効にする

この記事では、Apache を例として取り上げます。Apache の conf ディレクトリにある httpd.conf を確認し、次のコードを見つけます。 リーリー

その前の#を削除し、見つからない場合は追加します。

コードを見つける

リーリー

元のAllowOverride NoneをAllowOverride Allに変更します。

次に、サイトのルート ディレクトリに次の内容の .htaccess ファイルを作成します。

85ac288f8cdf15251785b7af9467eee6RESTful アーキテクチャに基づく Yii2 高度な API インターフェース開発、構成、実装、テスト、yii2restful_PHP チュートリアル オプション +フォローシンボリックリンク リライトエンジンオン RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule .index.php 2071f931c9870be1bebed0bdda8305e7 .htaccess yii2 の設定についてはここでは説明しません。必要に応じて、

YII2 実践マニュアルを参照してください。

YII2の実際の操作:

1. URL ルールとモジュールを設定する

(1) 新しいモジュールフォルダーを作成し、API インターフェースのバージョン管理を実装します。たとえば、V1 バージョン、V2 バージョン...

v1 フォルダーの下に新しいコントローラー フォルダー (コントローラー)、モデル フォルダー (モデル)、および Module.php 設定ファイルを作成します。

Module.php ファイルは次のとおりです:

リーリー

2 行目と 7 行目はバージョン拡張に伴って変更されます (v1->v2...)。

(2) configフォルダーにmain.phpファイルを設定します

RESTful アーキテクチャに基づく Yii2 高度な API インターフェース開発、構成、実装、テスト、yii2restful_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文件夹。

2、创建一个模型

数据库准备一个名为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文件夹中,并注意命名空间的修改。

RESTful アーキテクチャに基づく Yii2 高度な API インターフェース開発、構成、実装、テスト、yii2restful_PHP チュートリアル 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

3、创建一制御装置

RESTful アーキテクチャに基づく Yii2 高度な API インターフェース開発、構成、実装、テスト、yii2restful_PHP チュートリアル 1 16aab0a444835d3af32c19761e490f25 'yiirestシリアライザー', 17 'コレクションエンベロープ' => 「アイテム」 18 ]; 19 20 // パブリック関数の動作() 21 // { 22 // $behaviors =parent::behaviors(); 23 // $behaviors['authenticator'] = [ 24 // 'クラス' => CompositeAuth::className()、 25 // 'authMethods' => [ 26 // QueryParamAuth::className() 27 // ] 28 // ]; 29 // $behaviors を返します。 30 // } 31 パブリック 関数アクション() 32 { 33 $actions = 親::actions(); 34 // 注销系统自带的实现方法 35 unset($actions['index'], $actions['update'], $actions['create'], $actions['delete'], $actions ['ビュー']); 36 戻る $アクション; 37 } 38 39 パブリック 関数 actionIndex() 40 { 41 $modelClass = $this->modelClass; 42 $query = $modelClass::find(); 43 return new ActiveDataProvider([ 44 'クエリ' => $クエリ 45 ]); 46 } 47 48 public function actionCreate() 49 { 50 $model = new $this->modelClass(); 51 // $model->load(Yii::$app->getRequest() 52 // ->getBodyParams(), ''); 53 $model->attributes = Yii::$app->request->post(); 54 if (! $model->save()) { 55 return array_values($model->getFirstErrors())[0]; 56 } 57 戻る $モデル; 58 } 59 60 パブリック 関数 actionUpdate($id) 61 { 62 $model = $this->findModel($id); 63 $model->attributes = Yii::$app->request->post(); 64 if (! $model->save()) { 65 return array_values($model->getFirstErrors())[0]; 66 } 67 戻る $モデル; 68 }69 70 パブリック 関数 actionDelete($id) 71 { 72 return $this->findModel($id)->delete(); 73 } 74 75 パブリック 関数 actionView($id) 76 { 77 return $this->findModel($id); 78 } 79 80 保護されている 関数 findModel($id) 81 { 82 $modelClass = $this->modelClass; 83 if (($model = $modelClass::findOne($id)) !== null) { 84 戻る $モデル; 85 } else { 86 throw new NotFoundHttpException('要求されたページは存在しません。'); 87 } 88 } 89 90 public function checkAccess($action, $model = null, $params = []) 91 { 92 // 检查用户能否访问 $action と $model 93 // 访问被拒否绝应抛出ForbiddenHttpException 94 // var_dump($params);exit; 95 } 96 } SiteController.php

コントローラーはモジュール/コントローラーのファイルの下に作成されており、名前空間の変更に注意してください。

このコントローラーは通常のコントローラーとは異なり、ActiveController クラスを継承する必要があることに注意してください。

20 ~ 30 行の登録のコードは RESTful アーキテクチャの access_token 承認に基づいており、現在は通過せず、その後継続的に充電されます。

ここまでで、YII2 に基づくすべての構成が基本的に完了しました。次に、API インターフェイスのテスト ツールと方法を説明します。

RESTfulな测试ツールPostMAN: このセクションは、具体的には、次の試行中に図を参照して、不足の指示を提示するためのアプリケーションです。

上の APP バージョンの使用をお勧めします。後で自分で書いた API を簡単にパッケージ化できます。次は Web バージョンです。 YII2 でサポートされる RESTful には、情報の GET、情報の POST、情報の更新、情報の DELETE の 4 つの要求方式があります。

次に、4 つの要求データを表示する方法を開始します。

この例では、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 アーキテクチャに触れるのは初めてです。説明に間違いがある場合はご容赦ください。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1001458.html技術記事 RESTful アーキテクチャに基づいた Yii2 高度な API インターフェイスの開発、実装、テスト、yii2restful 環境構成: この記事では、サーバーの擬似静的を有効にして、Apache の conf ディレクトリを表示します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。