こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在4社経験している、11年目エンジニアです。
この記事では、 LaravelのAPIのルーティングを設定するapi.phpの概要を丁寧に解説していきます。
前提条件:実行環境について
実行環境は以下の通りです。
OS | Windows10 |
---|---|
PHPのバージョン | 8.0.3 |
Laravelのバージョン | 8.42.1 |
この記事では
C:\Laravel\LaravelSample
配下にLaravelのプロジェクトを作成しています。
api.phpとは
api.phpとは、APIでリクエストされたURLに対してルーティングを定義することができるファイルです。
ルーティングとは、リクエストされたURLに応じて
- コントローラーに処理を渡す
- 直接ビューを呼び出す
などを決めることです。
インストールした直後は↓のように記載されています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php use Illuminate\Http\Request; use Illuminate\Support\Facades\Route; /* |-------------------------------------------------------------------------- | API Routes |-------------------------------------------------------------------------- | | Here is where you can register API routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | is assigned the "api" middleware group. Enjoy building your API! | */ Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); }); |
api.phpは
プロジェクト\routes\api.php
に格納されています。
api.phpの基本的なルーティングの書き方
api.phpの基本的なルーティングの書き方は以下になります。
1 2 3 4 5 6 |
<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\SampleController; Route::get('/showvalue', [SampleController::class, 'showValue']); |
ルーティングで使いたいコントローラーは
1 |
use App\Http\Controllers\SampleController; |
と宣言しておきます。
Route::getのところが何を意味しているか?というと下画像になります。
例としてgetをあげていますが、ほかにも
- post
- put
- patch
- delete
- options
を設定することができます。
コントローラーへのルーティングの詳しい説明や、そのほかのルーティングの書き方は、以下の記事をご参考ください。
APIのルーティングでWebと異なる箇所があります。
それは、【/api】URIプレフィックスがデフォルトで自動的に適用されることです。
どういうことか解説します。
以下のようにルーティングをapi.phpに定義したとします。
1 |
Route::get('/showvalue', [SampleController::class, 'showValue']); |
web.phpに定義していたならば、【http://localhost:8000/showvalue】のURIが正解です。
しかしAPIだと、【http://localhost:8000/api/showvalue】というURIになります。
APIのルーティングはお気を付けください。
Laravelのバージョン7までとバージョン8でもルーティングの書き方が異なります。
バージョン7までは
1 2 3 4 5 |
<?php use Illuminate\Support\Facades\Route; Route::get('/sample', 'SampleController@showPage'); |
という書き方でした。
バージョン8から上記の書き方でルーティングの設定をしていると、Target class [○○Controller] does not exist.というエラーメッセージが表示されてしまいます。
エラーについては、こちらの記事をご参考ください。
【Laravel】エラーメッセージ「Target class [○○Controller] does not exist.」が表示されたときの解決策をお伝えします
まとめ:APIのルーティングはapi.phpで設定する
以上がLaravelのAPIのルーティングを設定するapi.phpの概要でした!
同じようにWebのルーティングを定義するweb.phpについては、以下の記事をご参考ください。
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
コメント