LaravelでRest Full APIのルーティングを行う
リソースルート設定
Laravelでは、Route::resource
を使用することでRESTに対応したルートを自動設定してくれます。
Route::resource('photos', 'PhotoController');
リソースコントローラにより処理されるアクション
HTTPメゾット | URI | アクション | 役割 |
GET | /コントローラ名 | index | 一覧表示 |
GET | /コントローラ名/create | create | 新規作成ページ |
POST | /コントローラ名 | store | 新規作成 |
GET | /コントローラ名/{id} | show | 読み込み |
GET | /コントローラ名/{id}/edit | edit | 編集ページ |
PUT/PATCH | /コントローラ名/{id} | update | 更新 |
DELETE | /コントローラ名/{id} | destroy | 削除 |
APIのルーティング設定
create
やedit
のようなHTMLテンプレートを提供するルートを除外する場合は、apiResource
メソッドを使用できます。
APIのルーティングを行いたいならこちらを仕様しましょう。
Route::apiResource('/v1/photos', 'PhotoController');
コントローラーの作成
make:controller
Artisanコマンドを使用することで、リソースコントローラーの雛形を生成出来ます。
$ php artisan make:controller PhotoController --resource
/app/Http/Controllers/PhotoController.php
namespace App\Http\Controllers;
class PhotoController extends Controller
{
public function index()
{
//
}
public function create()
{
//
}
public function store(Request $request)
{
//
}
public function show($id)
{
//
}
public function edit($id)
{
//
}
public function update(Request $request, $id)
{
//
}
public function destroy($id)
{
//
}
}
リソースルートを制限する
読み込み専用のAPIだったり、編集機能を廃止したい場合は、onlyやexceptを使用することでリソースルートを制限する事ができます。
index
,show
のみにする
Route::resource('photos', 'PhotoController')->only([
'index', 'show'
]);
create
,store
,update
,destroy
を除外する
Route::resource('photos', 'PhotoController')->except([
'create', 'store', 'update', 'destroy'
]);