私は最近、友人たちと取り組んだミニ プロジェクトで、Laravel を使用して API を開発しました。 Lumen は Laravel よりもはるかに軽量で高速なフレームワークなので、別の API を代わりに構築することにしました。 Lumen は、Eloquent、キャッシュ、ルーティング、ミドルウェア、およびサービス コンテナなど、Laravel から多くのおなじみの概念を利用します。 Lumen の主な利点の 1 つはその速度で、その結果、このフレームワークは高速なマイクロサービスまたは API を構築するために設計されています。
このチュートリアルは Lumen についてですが、Laravel の仕組みについて簡単に理解していれば、フォローする必要があるのはそれだけです。 このチュートリアルのために、composer
経由でそうすることにします。 Lumenをセットアップする他の方法は、こちらで確認できます。
ターミナルから、以下を実行します。 composer create-project — prefer-dist laravel/lumen lumen_api
これにより、Lumen とその依存関係がすべて lumen_api
ディレクトリにインストールされます。 次に、root
ディレクトリにある .env.example
ファイルの名前を .env
Lumen の 5.4 のデフォルトの cache
ドライバは memcached,
ですが、このチュートリアルでは必要ないでしょう。 ただし、array
、database
、redis
のいずれかがサポートされています。 .env
ファイルを編集し、デフォルトの CACHE_DRIVER
と QUEUE_DRIVER
を以下の値に置き換えます:
CACHE_DRIVER=array
QUEUE_DRIVER=database
ローカルにプロジェクトを提供するには、以下のコマンドを実行して PHP の組み込みサーバーを使用します:php -S localhost:8000 -t public
ブラウザで localhost:8000
にアクセスすると、次のページが表示されるでしょう。
What we’re built
We’re building a simple REST API that handle create, read, update and delete tasks for a product resource
… product resource
endpoints
- GET /products – すべての製品リソースを取得
- POST /products- 新しい製品リソースを作成
- GET /product/{id} – id による製品リソースを取得
- PUT /product/{id} – id による製品リソースを更新
- DELETE /product/{id}- 製品リソースを更新する id
Database and Migrations
Migration ファイルを作成しましょう。 次のコマンドを実行します。php artisan make:migration create_products_table
これにより、database/migrations
ディレクトリに新しいマイグレーション ファイルが作成されます。 Our product resource
は次の属性、name
、price
、description
を持ちます。
新しく作成したマイグレーション ファイルに次のコードを追加します。
database
設定を使用して .env
を編集し、次のコマンドを実行してマイグレーションを実行します。 php artisan migrate
製品モデルの作成
Laravelのartisan
コマンドでmodels
やcontrollers
を作成することに慣れているかもしれませんが、残念ながらLumenはこれらのコマンドをサポートしていません。 Lumen で利用可能な artisan
コマンドのリストを見るには、以下を実行してください:php artisan
app
ディレクトリに移動して、Product.php
という新しい model
を作成する
Laravel とは異なり、Lumen では Eloquent と Facades が初期状態でロードされていません。 これらを使えるようにするには、app\bootstrap.php
$app->withFacades();
$app->withEloquent();
Controller Methods
それでは、controller
を作成しましょう。 app\Http\Controller
ディレクトリに移動し、ProductController.php
ファイルを作成します。
-
index
メソッドは利用可能なすべての製品をJSON
応答として返します。 -
create
メソッドは新しいproduct
を作り、新しく作ったproduct
をJSON
応答として返します。 -
show
メソッドはそのid
で一つの製品リソースを返します。 -
update
メソッドは、同様にそのid
によって単一の製品リソースを更新します。 -
delete
メソッドは、そのid
によって製品リソースを削除してsuccess
メッセージを返します。
Routes
ついに routes
を追加する時が来ました。 routes
フォルダ内の web.php
ファイルを開き、次のコードを追加します:
routes
をグループ化して、prefix
api/v1
を追加します。 グループ化されたルートの共通のパラメーターを指定するために、Prefix を使用します。 まず、seed
を作成することから始めましょう。 実行:php artisan make:seed ProductsTableSeeder
これは、database/seeds
ディレクトリに ProductsTableSeeder.php
ファイルを作成します。 このファイルを次のコードで編集します:
次に、database\seeds
ディレクトリのDatabaseSeeder.php
ファイルを次のコードで編集します:
LaravelのモデルファクトリーとFakerライブラリを使用して、サンプルデータを生成していきます。 database\factories
ディレクトリに移動し、ModelFactory.php
ファイルに次のコードを追加します。
次に、実行します:php artisan db:seed
これは、database
にダミーデータを作成します。
Testing our API
APIのテストにPostmanを使っていきます。 Postman を始めるにあたって、詳しくはこちら
を参照してください。