【新規でサーバーを作る場合(QUICK-START)】
はじめに
このページでは、REST-API サーバーを新規に構築するための最短手順を紹介します。
ルーティング設定・メイン処理クラス・イベント処理クラス(イベントハンドラ型 / ステートマシン型)の 3 つを用意するだけで、REST-API サーバーを起動できます。
SOCKET-MANAGER Framework は PSR-7 準拠 の HTTP 処理と CUEI アーキテクチャ に基づく統一モデルを採用しており、 REST-API を 1 から構築する際もシンプルで一貫した開発体験を提供します。
まだ REST-API 開発環境を作成していない場合は、
詳細は次のセクション「REST-API 開発環境の準備」を参照してください。
まずは動くサンプルから学びたい場合は、 ▶サンプルを利用する場合(QUICK-START) を参照してください。
ルーティング設定・メイン処理クラス・イベント処理クラス(イベントハンドラ型 / ステートマシン型)の 3 つを用意するだけで、REST-API サーバーを起動できます。
SOCKET-MANAGER Framework は PSR-7 準拠 の HTTP 処理と CUEI アーキテクチャ に基づく統一モデルを採用しており、 REST-API を 1 から構築する際もシンプルで一貫した開発体験を提供します。
まだ REST-API 開発環境を作成していない場合は、
composer create-project によるプロジェクト生成が必要です。詳細は次のセクション「REST-API 開発環境の準備」を参照してください。
まずは動くサンプルから学びたい場合は、 ▶サンプルを利用する場合(QUICK-START) を参照してください。
REST-API 開発環境の準備
このページでは、REST-API サーバーを最短手順で新規作成する方法を紹介しますが、
その前に REST-API 開発環境そのものを用意する必要があります。
まだプロジェクトを作成していない場合は、次のコマンドで REST-API サーバー開発環境を生成してください。
これにより、REST-API サーバーに必要なディレクトリ構成と設定ファイルが自動生成されます。
すでに環境を作成済みの場合は、このまま次のステップへ進んでください。
まだプロジェクトを作成していない場合は、次のコマンドで REST-API サーバー開発環境を生成してください。
REST-API 開発環境の生成
composer create-project socket-manager/rest-api my-api
これにより、REST-API サーバーに必要なディレクトリ構成と設定ファイルが自動生成されます。
すでに環境を作成済みの場合は、このまま次のステップへ進んでください。
必要最小限のファイルを生成
ルーティング設定ファイルの生成
php worker custom:setting-routing hello
生成されるファイル:setting/hello.phpメイン処理クラスの生成
php worker custom:main Hello
生成されるファイル:MainClass/Hello.phpイベント処理クラスの生成(どちらか一方)
php worker custom:event-handler HelloEventhandler
生成されるファイル:EventClass/HelloEventhandler.php
php worker custom:state-machine HelloStateMachine
生成されるファイル:EventClass/HelloStateMachine.php最小ルーティング設定を書く
setting/hello.php の内容
return [
'routes' => [
['GET', '/hello', 'onRequest'], // ←追加分
],
...(既存のコード)
];
イベント処理クラスの最小実装(比較)
イベントハンドラ型(最小)
<?php
class HelloEventhandler extends CommandForHandler
{
protected function onRequest($ctx)
{
$ctx->json(['message' => 'hello']);
}
}
ステートマシン型(最小)
<?php
class HelloStateMachine extends CommandForStateMachine
{
protected function onStart($ctx)
{
return [
[
'status' => 'start',
'unit' => function($ctx): ?string
{
$ctx->json(['message' => 'hello']);
return null;
}
]
];
}
}
イベント処理クラス名の登録
使用するイベント処理クラス名をメイン処理クラスへ登録します。
イベントハンドラ型の場合
protected array $classes = [
'context' => null,
'event' => HelloEventhandler::class,
'parallel' => null
];
ステートマシン型の場合
protected array $classes = [
'context' => null,
'event' => HelloStateMachine::class,
'parallel' => null
];
サーバーを起動する
メイン処理クラス生成時の `Hello` の名称が `identifier` にもセットされます。
そのため、次のコマンドで起動できます。
protected string $identifer = 'app:Hello {port?} {keep_alive?}';
そのため、次のコマンドで起動できます。
php worker app:Hello
動作確認
ブラウザまたは curl で確認
curl http://localhost:8080/hello
{"message":"hello"}
次のステップ
このクイックスタートでは、REST-API サーバーを動かすための最小構成を紹介しました。
より高度な実装や内部構造について理解を深めたい場合は、以下のページを参照してください。
● CUEIとの実装レベルでの関係(通信抽象化 / Context / Event / IPC)
▶CUEIとの実装レベルでの関係
● PSR-7 ラッパーの仕様(RequestWrapper / ResponseWrapper)
▶PSR-7 ラッパーの仕様
● イベントハンドラ型実装(CRUD / Range)
▶イベントハンドラ型実装
● ステートマシン型実装(Chunked / SSE / Range / IPC)
▶ステートマシン型実装
REST-API サーバーの基礎から応用まで、段階的に理解できる構成になっています。
より高度な実装や内部構造について理解を深めたい場合は、以下のページを参照してください。
● CUEIとの実装レベルでの関係(通信抽象化 / Context / Event / IPC)
▶CUEIとの実装レベルでの関係
● PSR-7 ラッパーの仕様(RequestWrapper / ResponseWrapper)
▶PSR-7 ラッパーの仕様
● イベントハンドラ型実装(CRUD / Range)
▶イベントハンドラ型実装
● ステートマシン型実装(Chunked / SSE / Range / IPC)
▶ステートマシン型実装
REST-API サーバーの基礎から応用まで、段階的に理解できる構成になっています。