0
1

Laravelで最速にAPIサーバーを作成する(3ステップ)

Posted at

概要

LaravelでAPIサーバーを作成する際の要点をこの記事にまとめる。
以下のように実装すれば、主要観点を最短で実装できないか?と思う。

① routes/api.php にPATHを設定

routes/api.php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\PlayerController;

~

Route::prefix('player')->group(function () {
    Route::get('/', [PlayerController::class, 'index']);
    Route::get('/{id}', [PlayerController::class, 'detail'])->where('id', '[0-9]+');
    Route::post('/', [PlayerController::class, 'insert']);
    Route::patch('/{id}', [PlayerController::class, 'update'])->where('id', '[0-9]+');
    Route::get('/search', [PlayerController::class, 'search']);
}

この時URIは api/player/... となることは、以下のコマンドでも確認できる。
php artisan route:list

②コントローラにAPIサーバの機構を実装

App\Http\Controllers\PlayerController.php
use App\Models\Player;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

~

public function index(): JsonResponse
{
    $player = Player::all();
    return response()->json($player, options: JSON_UNESCAPED_UNICODE);
}

public function detail(int $id): JsonResponse
{
    $player = Player::find($id);
    return response()->json($player, options: JSON_UNESCAPED_UNICODE);
}

public function insert(Request $request): JsonResponse
{
    $createdRecord = Player::create($request->all());
    return response()->json($createdRecord, 201, options: JSON_UNESCAPED_UNICODE);
}

public function update(int $id, Request $request): JsonResponse
{
    $player = Player::where(['id' => $id]);
    $updateResult = $player->update($request->except('id')) ? 'success' : 'failure';
    return response()->json(['result' => $updateResult]);
}

public function search(Request $request): JsonResponse
{
    $players = Player::findBySearchRequest($request);
    return response()->json($players, options: JSON_UNESCAPED_UNICODE);
}

③モデルにDBとのやり取りのロジックを書く

App\Http\Models\Player.php

static public function findBySearchRequest(Request $request)
{
    // 検索ロジックを書く(個別の状況によると思うので今回は割愛)
    return $players;
}

以上で、完成である。

補足

APIのテストについて

簡易なGETメソッドのテストならURLを以下のようにすれば良い。
/search?text=テスト&age=20

POST、PUTCHなどのメソッドはじめ、詳細にテストしたい場合は、以下のようなツールなどを使うのが良いと思います。


記事をお読みいただき、ありがとうございました!
もし参考になったと感じましたら、「いいね」や共有など頂けたら嬉しく思います!
何卒よろしくお願い致します!

0
1
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
1