LaravelでRest Full APIのルーティングを行う

LaravelでRest Full APIのルーティングを行う

リソースルート設定

Laravelでは、Route::resourceを使用することでRESTに対応したルートを自動設定してくれます。

Route::resource('photos', 'PhotoController');

リソースコントローラにより処理されるアクション

HTTPメゾットURIアクション役割
GET/コントローラ名index一覧表示
GET/コントローラ名/createcreate新規作成ページ
POST/コントローラ名store新規作成
GET/コントローラ名/{id}show読み込み
GET/コントローラ名/{id}/editedit編集ページ
PUT/PATCH/コントローラ名/{id}update更新
DELETE/コントローラ名/{id}destroy削除

APIのルーティング設定

createeditのような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'
]);

参考リンク