【新規でサーバーを作る場合(QUICK-START)】

はじめに

このページでは、REST-API サーバーを新規に構築するための最短手順を紹介します。
ルーティング設定・メイン処理クラス・イベント処理クラス(イベントハンドラ型 / ステートマシン型)の 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 開発環境の生成

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 サーバーの基礎から応用まで、段階的に理解できる構成になっています。