前提
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