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'
]);