Open1

Laravel:API

KKKKKKKK

設定

ターミナルで以下コマンド実行

terminal
$ php artisan install:api

routesフォルダにapi.phpが作成されるので、web.phpと同じようにルートの設定を行う。

設定されたルートの先頭には自動的に/apiが付与される。

routes/api.php
use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Response as HttpResponse;

Route::get('product', function () {
    $products = DB::table('products')->get();

    return Response::json((array) $products, HttpResponse::HTTP_OK, ['Content-Type' => 'application/json; utf-8']);
});
JavaScript
const res = await fetch('http://localhost:8000/api/products');
const data = await res.json();

api.phpが読み込まれていない場合はbootstrap/app.phpを確認

bootstarp/app.php
...
return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        api: __DIR__.'/../routes/api.php', // これがなければ追加する
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
    )
...

接頭辞をいじることもできる

bootstarp/app.php
...
return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        api: __DIR__.'/../routes/api.php',
        apiPrefix: 'api/v1', // APIのルートに対して'/api/v1'が自動で付与される
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
    )
...