まずRESTとは何かを説明します
restful
RESTはRepresentational State Transferの略で、中国語の意味は代表的(編集者注:通常は代表と訳される)状態転送です。 これは 2000 年に、HTTP 仕様の主な執筆者の 1 人である Roy Fielding の博士論文で初めて登場しました。 同氏は論文の中で次のように述べている:「この記事を書く目的は、アーキテクチャ原則に準拠することを前提としてネットワークベースのアプリケーションソフトウェアのアーキテクチャ設計を理解し、評価し、強力な機能、優れたパフォーマンス、および優れた性能を備えたアーキテクチャを取得することです」通信に適したアーキテクチャ。REST は一連のアーキテクチャ上の制約と原則を指します。「アーキテクチャが REST の制約と原則に準拠している場合、それを RESTful アーキテクチャと呼びます。
REST 自体は新しいテクノロジー、コンポーネント、またはサービスを作成しませんが、RESTful の背後にある考え方は、Web の既存の機能と機能を使用し、既存の Web 標準のガイドラインと制約をより有効に活用することです。 REST 自体は Web テクノロジーの影響を深く受けていますが、理論上、REST アーキテクチャ スタイルは HTTP に拘束されませんが、現時点では HTTP が REST に関連する唯一のインスタンスです。 したがって、ここで説明する REST も HTTP を通じて実装された REST です。
私は少し前に、Yii2 フレームワークを使用して一連の RESTful スタイル API を作成するプロジェクトに取り組んでいました。「Yii 2.0 Authoritative Guide」を確認したところ、比較的簡潔に書かれていることがわかりました。そこで、Yii2 フレームワーク RESTful を初めて使用する友人がすぐに使い始められるようにしたいと考えて、ここにチュートリアルの投稿を書いています。
1. ディレクトリ構造
単純な RESTful API を実装するには、3 つのファイルのみが必要です。ディレクトリは次のとおりです。
frontend ├─ config │ └ main.php ├─ controllers │ └ BookController.php └─ models └ Book.php
2. URL ルールを設定します
1. /books/1 形式をサポートするように、サーバーの書き換えルールを変更し、すべての URL が Index.php を指すようにします。
Apache サーバーの場合は、frontend/web/ ディレクトリに新しい .htaccess ファイルを作成します。ファイルの内容は以下の通りです。
RewriteEngine on # If a directory or a file exists, use the request directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # Otherwise forward the request to index.php RewriteRule . index.php
Nginxサーバーの場合は、nginx/conf/nginx.confを修正し、現在の「」の「場所/{}」に以下の赤マークの内容を追加します。 server{}":
location / { try_files $uri $uri/ /index.php$is_args$args; }
2.frontend/config/main.php ファイルを変更し、ブック コントローラの URL ルールを追加します。このようにして、美しい URL と意味のある http 動詞を通じてデータにアクセスし、操作することができます。構成は次のとおりです。
'components' => [ 'urlManager' => [ 'enablePrettyUrl' => true, 'enableStrictParsing' => true, 'showScriptName' => false, 'rules' => [ ['class' => 'yii\rest\UrlRule', 'controller' => 'book'], ], ], ],
3. モデルを作成します
1. データベースに書籍テーブルを作成します。 Book テーブルの内容は次のとおりです。
-- ---------------------------- -- Table structure for book -- ---------------------------- DROP TABLE IF EXISTS `book`; CREATE TABLE `book` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` char(50) NOT NULL DEFAULT '', `num` tinyint(3) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of book -- ---------------------------- INSERT INTO `book` VALUES ('1', 'toefl', '10'); INSERT INTO `book` VALUES ('2', 'ielts', '20'); INSERT INTO `book` VALUES ('3', 'sat', '30'); INSERT INTO `book` VALUES ('4', 'gre', '40'); INSERT INTO `book` VALUES ('5', 'gmat', '50');
2. 新しい Book.php をfrontend/models/ ディレクトリに作成します。ファイルの内容は次のとおりです。
namespace frontend\models; use yii\db\ActiveRecord; class Book extends ActiveRecord { public static function tableName() { return 'book'; } }
4. コントローラーを作成します
新しい BookController.php をfrontend/controllers/ ディレクトリに作成します。コントローラー クラスは yiirestActiveController から拡張されます。 yiirestActiveController::modelClass をfrontendmodelsBook として指定すると、コントローラーはデータの取得と処理にどのモデルを使用するかを認識します。ファイルの内容は次のとおりです。
namespace frontend\controllers; use yii\rest\ActiveController; class BookController extends ActiveController { public $modelClass = 'frontend\models\Book'; }
5. テスト
この時点で、ユーザー データにアクセスするための RESTful スタイルの API の作成が完了しました。作成したAPIには以下が含まれます:
GET /books: すべての書籍を一覧表示
HEAD /books: 書籍リストの概要情報を表示
POST /books: 新しい書籍を1冊追加
GET /books/1: 書籍ID=1の詳細情報を返す
HEAD /books/1: 書籍ID=1の概要情報を表示
PATCH /books/1とPUT /books/1: 書籍ID=1の情報を更新
DELETE /books/1: 書籍ID=1の情報を削除
OPTIONS / Books: 末尾 /books についてサポートされている動詞を表示します
オプション /books/1: 末尾 /books/1 についてサポートされている動詞を表示します
URL http://{Web ブラウザのフロントエンドのドメイン名 }/ を入力できます書籍を使用して API にアクセスするか、Firefox の RestClient、Chrome の Advanced Rest Client、postman などの特定のヘッダー リクエストを送信するブラウザ プラグインを使用します。
6. 手順
1.Yiiは最後に使用するコントローラーの名前を自動的に複数形にします。これは、yiirestUrlRule が使用するエンドポイントのコントローラーを自動的に複数化できるためです。この動作は、yiirestUrlRule::pluralize を false:
'rules' => [ ['class' => 'yii\rest\UrlRule', 'controller' => 'book', 'pluralize' => false], ],
2 に設定することで無効にできます。フィールドと展開パラメータを使用して、結果に含めるフィールドを指定できます。例: URL http://{フロントエンドのドメイン名}/books?fields=name,num は、name フィールドと num フィールドのみを返します。
上記は、エディターが紹介した Yii2 フレームワークを使用して RESTful API を作成するためのクイック スタート チュートリアルです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。 。また、PHP 中国語 Web サイトをサポートしていただきありがとうございます。
Yii2 フレームワークの RESTful スタイル API クイック スタート チュートリアルに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。