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は広く使用されているので、その基本を理解することが大切です。
前:
次: