CakePHPを使ったAPI開発の基本的な流れを解説します。本記事では、プロジェクトのセットアップから運用までの手順と、各ファイル間のつながりについて詳しく説明します。
1. プロジェクトのセットアップ
プロジェクトの作成
以下のコマンドでCakePHPプロジェクトを作成します。
bashコピーする編集するcomposer create-project --prefer-dist cakephp/app my_app_name
cd my_app_name
データベースの接続設定
config/app_local.php
にデータベース接続情報を設定します。
つながり
config/app_local.php
はデータベースとの接続設定を司り、モデルやマイグレーションで使用されます。
2. データベースの準備
マイグレーションの作成
以下のコマンドでテーブル構造を定義するマイグレーションファイルを生成します。
bashコピーする編集するbin/cake bake migration CreateUsers
マイグレーションの実行
生成したマイグレーションを実行してテーブルを作成します。
bashコピーする編集するbin/cake migrations migrate
つながり
config/Migrations
ディレクトリのファイルで定義されたテーブル構造が、モデルと連携してデータ操作を可能にします。
3. モデルの作成
モデルの生成
以下のコマンドでモデルを自動生成します。
bashコピーする編集するbin/cake bake model Users
つながり
- モデルは、コントローラーやサービス層から呼び出され、データベース操作のロジックを提供します。
4. コントローラーの作成
コントローラーの生成
以下のコマンドでコントローラーを生成します。
bashコピーする編集するbin/cake bake controller Api/Users
アクションの実装
index
アクションで、全ユーザー情報を取得する処理を実装します。
phpコピーする編集するpublic function index()
{
$users = $this->Users->find('all');
$this->set([
'users' => $users,
'_serialize' => ['users'],
]);
}
つながり
- コントローラーは、モデルを利用してデータを取得し、レスポンスを生成します。
5. ルーティングの設定
ルートの定義
config/routes.php
に以下を追加し、APIエンドポイントを定義します。
phpコピーする編集する$routes->scope('/api', function (RouteBuilder $builder): void {
$builder->resources('Users');
});
つながり
- ルート設定により、リクエスト(例:
/api/users
)が適切なコントローラーに送られます。
6. ビューの作成(JSONレスポンス)
CakePHPではAPIの場合でもビューが役割を持ちます。
JSONレスポンスの有効化
RequestHandler
を使用して、JSON形式でレスポンスを生成します。
phpコピーする編集するpublic function index()
{
$users = $this->Users->find('all');
$this->set([
'users' => $users,
'_serialize' => ['users'],
]);
}
つながり
- 整形されたレスポンスデータがAPIのクライアント(フロントエンドなど)に渡されます。
7. 認証・認可の設定
認証ミドルウェアの追加
src/Application.php
に認証ミドルウェアを追加します。
phpコピーする編集する$middleware->add(new AuthenticationMiddleware($this));
つながり
- ミドルウェアがリクエスト処理の初期段階で動作し、アクセス制限を実現します。
8. テストとデバッグ
テストファイルの作成
以下のコマンドでテストファイルを生成します。
bashコピーする編集するbin/cake bake test Controller/Api/UsersController
テストの実行
以下のコマンドでテストを実行し、各機能を検証します。
bashコピーする編集するbin/cake test
つながり
- テストファイルで記述した処理が、コントローラーやモデルの動作を検証します。
9. デプロイと運用
デプロイ
完成したAPIを本番環境にデプロイします。DockerやAWS ECSなどを使用して、運用を開始します。
全体のつながりイメージ
- ルーティング (
config/routes.php
): リクエストを適切なコントローラーに送る。 - コントローラー (
UsersController.php
): ロジックを処理し、モデルにデータ操作を依頼。 - モデル (
UsersTable.php
): データベースとやり取りし、データを返す。 - レスポンス (JSON): クライアントにデータを提供。
コメントを残す