Laravel

「lumen」でWebAPIを開発する

以前に「Laravel」の開発環境構築について記事をまとめました。

ただセッションやクッキーを使用しないWebAPIは「lumen」を使用する事も検討できます。
「lumen」は基本的には「Laravel」を元に最低限の機能を搭載したものとなります。
そのため処理が軽くなるため、複雑な処理を行わないデータベースの情報を取得するなどといった、簡単な実装の場合は「lumen」で使用した方がいいかと思われます。

「lumen」のインストール

以下のコマンドで「lumen」をインストールする事が出来ます。
({project}はプロジェクト名を入力)

$ composer create-project --prefer-dist laravel/lumen {project}

最初にやる事

「.env」の設定

「lumen」は「Laravel」と違って初期設定の融通が効いていませんので設定を行なっていきます。
特に「APP_TIMEZONE」は「Asia/Tokyo」にしておかないと時間帯が「UTC」となっているので変更します。

APP_NAME={アプリ名}
APP_ENV={環境}
APP_KEY={APIキー}
APP_DEBUG={デバッグ設定}
APP_URL={アプリのURL}
APP_TIMEZONE=Asia/Tokyo

LOG_CHANNEL={ログのチャンネル}
LOG_SLACK_WEBHOOK_URL={Slackでログを取得する場合のURL}

# データベース設定
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

# キャッシュの設定
CACHE_DRIVER=file
QUEUE_CONNECTION=sync

「bootstrap/app.php」の設定

「Laravel」でよく使用するファサードですが「lumen」ではデフォルトでは使用できません。
またデータベースを使用するのであれば、「Eloquent」を使いますが、こちらもデフォルトでは使用できません。
bootstrap/app.php」の以下のソースを探してコメントを外しましょう。

// 以下のソースのコメントを解除する
// $app->withFacades(); 

// $app->withEloquent();
$app->withFacades(); 

$app->withEloquent();

また「app.php」では「ミドルウェア」「サービスプロバイダ」「route」に関する設定が入っております。
必要に応じてコメントを外したり、定義を変更するようにします。

// アプリで使用するミドルウェアを定義
$app->middleware([
    App\Http\Middleware\ExampleMiddleware::class
]);

// Routeで使用するミドルウェアを定義
$app->routeMiddleware([
    'auth' => App\Http\Middleware\Authenticate::class,
]);

「API_KEY」の作成

「Laravel」であれば、以下のコマンドを使用する事で「API_KEY」を作成する事ができます。

$ php artisan key:generate

しかし「lumen」では「key:generate」が使用出来ないため、以下のコマンドをプロジェクト内で使用するようになります。

php -r "require 'vendor/autoload.php'; echo \Illuminate\Support\Str::random(32);"

ローカルでサーバーの起動

「Laravel」と違って「lumen」には、初期でサーバーを起動するコマンドはありません。
「lumen」をローカルで動作確認したい場合は、まずはプロジェクトフォルダに移動します。

$ cd {lumenプロジェクトのフォルダのパス}

以下のコマンドでサーバーを起動する事ができます。

$ php -S localhost:8000 -t public

終了する場合はキーボードの「Ctrl + C」で終了します。