WEB/システム/IT技術ブログ

LaravelでREST API開発

最近、Vue.jsやReactなどを使用したSPA開発がトレンドで、API開発も需要も高まってきてます。
Laravelでは、APIに必要なルートやコントローラを簡単に生成できるしくみが用意されています。

今回はLaravelでAPIの開発を始める際の基礎をみてみます。
ちなみに、Laravel 6.xがインストール済みであることを前提とします。
また、任意の「Sample」データに対してAPIを開発するとします。

コントローラ作成

以下のコマンドで、APIに必要な関数を含んだコントローラ「app/Http/Controllers/API/SampleController.php」を作成することができます。

$ php artisan make:controller API/SampleController --api

作成されたコントローラの中身は以下のようになってます。

namespace App\Http\Controllers\API;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class SampleController extends Controller
{
	public function index()
	{
			//
	}

	public function store(Request $request)
	{
			//
	}

	public function show($id)
	{
			//
	}

	public function update(Request $request, $id)
	{
			//
	}

	public function destroy($id)
	{
			//
	}
}

ルート作成

次にルートを設定します。
「routes/api.php」を開き、以下を追記すると、APIに必要な基本ルートが設定されます。

Route::apiResource('sample', 'API\SampleController');

ルートをartisanコマンドで確認してみます。

$ php artisan route:list
(中略)
| Method    | URI                 | Name           | Action                                            | Middleware |
+-----------+---------------------+----------------+---------------------------------------------------+------------+
| POST      | api/sample          | sample.store   | App\Http\Controllers\API\SampleController@store   | api        |
| GET|HEAD  | api/sample          | sample.index   | App\Http\Controllers\API\SampleController@index   | api        |
| DELETE    | api/sample/{sample} | sample.destroy | App\Http\Controllers\API\SampleController@destroy | api        |
| PUT|PATCH | api/sample/{sample} | sample.update  | App\Http\Controllers\API\SampleController@update  | api        |
| GET|HEAD  | api/sample/{sample} | sample.show    | App\Http\Controllers\API\SampleController@show    | api        |
(中略)

それぞれのルートについては、以下の目的で使用します。

sample.index Sampleデータの一覧を返します
sample.store Sampleに新しいデータを追加します
sample.show 指定したSampleデータを返します
sample.update 指定したSampleデータを更新します
sample.destroy 指定したSampleデータを削除します

例えば「update」や「show」は使わないなど、不要な処理がある場合は、以下のようにしてルートの除外指定ができます。対象のコントローラの関数は手動で削除します。

Route::apiResource('sample', 'API\SampleController')->except([
	'update', 'show'
]);
B!

Comment

コメントはありません

コメントする

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Monthly Archives