RESTful API

RESTful API

RESTful APIとはWebアプリケーションがHTTPプロトコルを介してデータをやり取りするための設計原則です。REST(Representational State Transfer)に基づいて、リソースを一貫した方法で操作することを目的としています。APIはリソースを中心に設計され、各リソースは一位のURIであらわされます。リソースの操作にHTTPメソッドが使用されます。RESTful APIの返答にはJSONが使用されます。

Laravelでの実装

LaravelでRESTful APIを実装するにはいくつかの手順が必要です。まず。以下のコマンドでAPIを登録するファイルを作成し必要なファイルをインストールします。途中で保留中のデータベースの移行を実行するかどうか聞かれたら、yesと答えて、データベースの移行を実行します。

php artisan install:api

上記のコマンドを実行すると、routes/api.phpが作成されます。このファイルにAPIの登録を記述します。

次に、APIで使用するリソースを定義します。今回は名前とメールアドレスを持つSubscriberモデルを作成します。ここで作成するリソースはどのようなものでも構いません。

次に、コントローラーを作成します。コントローラーは以下のコマンドで作成します。

php artisan make:controller SubscriberController --api

コントローラーを以下のように書き換えます。

<?php

namespace App\Http\Controllers;

use App\Models\Subscriber;
use Illuminate\Http\Request;

class SubscriberController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    public function index()
    {
        return Subscriber::all();
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(Request $request)
    {
        $validatedData = $request->validate([
            "name" => "required|string",
            "email" => "required|email|unique:subscribers,email",
        ]);

        return Subscriber::create($validatedData);
    }

    /**
     * Display the specified resource.
     */
    public function show(Subscriber $subscriber)
    {
        return $subscriber;
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request, Subscriber $subscriber)
    {
        $validatedData = $request->validate([
            "name" => "required|string",
            "email" => "required|email",
        ]);

        $subscriber->update($validatedData);

        return $subscriber;
    }

    /**
     * Remove the specified resource from storage.
     */
    public function destroy(Subscriber $subscriber)
    {
        $subscriber->delete();

        return response()->noContent();
    }
}

indexメソッドはSubscriberのすべての値を返却しています。これはブラウザにはJSON形式で返されます。storeメソッドはバリデーションをした後でcreateメソッドでデータを登録し、その情報をそのまま返します。これもJSON形式で返却されます。showメソッドは指定したデータをそのまま返します。updateメソッドはバリデーションをした後、updateメソッドでデータを更新します。更新する情報はsubscriberに格納されているため、それを返却します。destroyメソッドはdelete関数で削除した後、response()->noContent()でリソースが存在しないことを返します。ステータスレコードは204を返します。

次にコントローラーを登録します。routes/api.phpに以下のように登録します。

Route::apiResource("subscribers", SubscriberController::class);

APIのテスト

APIが正常に動作するかテストします。テストするにはPostなどを使用するためブラウザ以外のソフトウェアでテストします。ここでは、Postmanを使用します。postmanの解説は省略します。

まず、http://localhost/api/subscribersにPostメソッドでアクセスし、データを新規登録します。PostmanのボディのRawに以下のJSONを記述します。

{
    "name":"test",
    "email":"test@example.com"
}

送信した後に、Getメソッドでhttp://localhost/api/subscribersにアクセスします。アクセスすると、先ほど登録したデータが返されます。さらにいくつかデータを新規登録します。次に、http://localhost/api/subscribers/1にPutメソッドでアクセスします。Postmanのボディは以下のように変更する内容を記述します。

{
    "name":"test1",
    "email":"test1@example.com"
}

送信すると、変更内容が返ってくるはずです。最後にhttp://localhost/api/subscribers/1にDeleteメソッドでアクセスします。アクセスすると何も返ってきませんが、一覧を表示するとデータが削除されているのがわかります。

今回はRESTful APIについて解説しました。RESTful APIは広く使用されているので、その基本を理解することが大切です。

前:

次:

コメントを残す

CAPTCHA