Laravel 5を使用してAPIを作成する方法について、完全かつ包括的な記事を日本語で解説します。以下では、APIの構築のステップを順を追って説明し、基本的な設定から認証、エラーハンドリング、レスポンス形式の設定など、実際の開発に役立つ情報を盛り込んでいます。
1. Laravel 5のインストール
まずは、Laravel 5のプロジェクトを新規に作成します。以下のコマンドをターミナルで実行してください。

bashcomposer create-project --prefer-dist laravel/laravel my-api-project "5.*"
上記コマンドを実行すると、「my-api-project」という名前のディレクトリにLaravel 5がインストールされます。
2. APIルートの設定
Laravelでは、APIルートをroutes/api.php
ファイルで設定します。このファイルにAPI専用のルートを追加します。まずは基本的なGETリクエストのルートを設定しましょう。
php// routes/api.php
Route::get('users', 'Api\UserController@index');
ここでは、/api/users
にアクセスしたときに、UserController
のindex
メソッドを呼び出すように設定しています。
3. コントローラーの作成
次に、API用のコントローラーを作成します。コントローラーは、APIのロジックを処理する重要な部分です。以下のコマンドでコントローラーを作成します。
bashphp artisan make:controller Api/UserController
これで、app/Http/Controllers/Api/UserController.php
というファイルが作成されます。このファイルに、index
メソッドを実装します。
php// app/Http/Controllers/Api/UserController.php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function index()
{
// ユーザー情報を取得して返す
$users = User::all();
return response()->json($users);
}
}
このindex
メソッドは、users
テーブルから全てのユーザー情報を取得し、JSON形式で返す役割を果たします。
4. モデルの作成
Laravelでは、Eloquent ORMを使ってデータベースとやり取りを行います。User
モデルはデフォルトで用意されていますが、必要に応じてカスタマイズすることもできます。基本的には、app/Models/User.php
で以下のように定義されています。
php// app/Models/User.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
// ユーザーモデルの設定をここに追加できます
}
5. データベース設定
APIで扱うデータは、データベースに保存されている情報です。.env
ファイルでデータベースの設定を行います。
envDB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=your_database DB_USERNAME=your_username DB_PASSWORD=your_password
データベースを設定したら、マイグレーションを実行して、テーブルを作成します。
bashphp artisan migrate
これで、users
テーブルが作成され、ユーザー情報をデータベースに保存できるようになります。
6. 認証の実装
APIでユーザー認証を行うには、Laravel PassportやLaravel Sanctumなどのパッケージを使用するのが一般的です。ここでは、より簡単に実装できるLaravel Sanctum
を使用します。
まず、Sanctum
をインストールします。
bashcomposer require laravel/sanctum
次に、Sanctumの設定を行います。config/sanctum.php
で設定を行い、User
モデルにHasApiTokens
トレイトを追加します。
php// app/Models/User.php
namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens;
}
また、api
ミドルウェアを使うことで、APIリクエスト時にトークンを使った認証が可能になります。
7. APIレスポンスのフォーマット
APIのレスポンスは、通常JSON形式で返されます。Laravelでは、response()->json()
メソッドを使って簡単にJSONレスポンスを返すことができます。
例えば、次のようにユーザー情報をJSON形式で返すことができます。
phppublic function index()
{
$users = User::all();
return response()->json([
'success' => true,
'data' => $users
]);
}
このように、success
というキーでAPIの成功を示し、data
で実際のデータを返す形が一般的です。
8. エラーハンドリング
APIでは、エラーハンドリングが重要です。Laravelでは、標準でHTTPエラーに対応したレスポンスを返す機能が備わっています。例えば、リソースが見つからない場合、404 Not Found
のレスポンスが返されます。
カスタムエラーハンドリングを行う場合、app/Exceptions/Handler.php
にエラー処理を追加できます。たとえば、リソースが見つからなかった場合にカスタムメッセージを返すように設定できます。
php// app/Exceptions/Handler.php
use Illuminate\Database\Eloquent\ModelNotFoundException;
public function render($request, Exception $exception)
{
if ($exception instanceof ModelNotFoundException) {
return response()->json(['error' => 'Resource not found'], 404);
}
return parent::render($request, $exception);
}
9. APIリクエストのテスト
Laravelでは、php artisan tinker
を使って、APIのエンドポイントをテストすることができます。また、PostmanやInsomniaといったツールを使用して、APIエンドポイントに対して実際のリクエストを送信し、レスポンスを確認することも重要です。
Postmanを使って、GET /api/users
リクエストを送ると、JSON形式でユーザー情報が返ってくるはずです。
10. 結論
Laravel 5を使ってAPIを作成する基本的な流れについて説明しました。実際には、認証機能やエラーハンドリング、バリデーションなど、さらに多くの機能を組み込むことができますが、この記事では基本的なAPIの作成方法に焦点を当てました。Laravelの柔軟性を活かして、様々なAPIを構築することができます。