LoginSignup
0
0

More than 1 year has passed since last update.

LaravelでAPIを作成する

Last updated at Posted at 2021-05-16

前提

LaravelでAPIを作成していきます
今回は一覧取得/新規登録/更新/削除を実装します。

前提としてはhogeコントローラーとhogeモデル、hogeテーブルが作成されている前提です

controllerで個々にインポートしなくても良くなる設定

app/Providers/RouteServiceProvider.phpへ以下のコメントアウトを解除する

protected $namespace = 'App\\Http\\Controllers';

DBは下記のマイグレーションファイルで作成しておきデータも数件入れておく

Schema::create('hoges', function (Blueprint $table) {
            $table->id();
            $table->string('hoge');
            $table->boolean('fuga')->default(false);
            $table->timestamps();
        });

コントローラーの編集

app/Http/Controllers/HogeController.phpへ以下を追記する

<?php

namespace App\Http\Controllers;

use App\Models\Task;
use App\Http\Requests\HogeRequest;
use Illuminate\Http\Request;

class HogeController extends Controller
{
    /**
     * Display a listing of the resource.
     * 一覧取得
     * @return \Illuminate\Support\Collection
     */
    public function index()
    {
        return Task::orderByDesc('id')->get();
    }

    /**
     * Store a newly created resource in storage.
     * 新規登録
     * @param  HogeRequest  $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function store(HogeRequest $request)
    {
        $task = Hoge::create($request->all());

        return $task
            ? response()->json($task, 201)
            : response()->json([], 500);
    }

    /**
     * Update the specified resource in storage.
     * 更新
     * @param  \Illuminate\Http\TaskRequest  $request
     * @param  \App\Models\Hoge  $hoge
     * @return \Illuminate\Http\JsonResponse
     */
    public function update(HogeRequest $request, Hoge $hoge)
    {
        $hoge->title = $request->title;

        return $hoge->update()
            ? response()->json($hoge)
            : response()->json([], 500);
    }

    /**
     * Remove the specified resource from storage.
     * 削除
     * @param  \App\Models\Hoge  $hoge
     * @return \Illuminate\Http\JsonResponse
     */
    public function destroy(Hoge $hoge)
    {
        return $hoge->delete()
            ? response()->json($hoge)
            : response()->json([], 500);
    }

}

モデルの編集

app/Models/Hoge.phpへ以下を追記する。

# fillable内にはDBのデータを触るカラムを記述する。
protected $fillable = [
        'hoge',
        'fuga',
    ];

ルートの編集

routes/api.phpへ以下を追記する。

Route::apiResource('hoges', 'HogeController');

下記のURLにアクセスすると一覧取得のAPIが表示されます!
localhost:8000/api/hoges

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0