Laravelを使用したAPIの立ち上げ方法
概要
- Laravelの立ち上げ
- Breezeを使ったログイン機能実装
- テーブル作成
- Modelの作成
- ダミーデータの作成
前提
- MacOS
- Docker Desktop
- sailを使用
1.Laravel プロジェクトの作成
プロジェクトの作成
Project_Name 部分をフォルダ名にして実行
curl -s "https://laravel.build/Project_Name?php=80&with=mariadb" | zsh
プロジェクトの権限を変更
sudo chmod -R 777 プロジェクト名
プロジェクトコンテナの起動
sail up -d
停止
sail down
.env ファイルを修正
LOG_CHANNEL=daily
APP_NAME=Project_Name
config/app.php
'timezone' => 'Asia/Tokyo',
'faker_locale' => 'ja_JP',
env ファイル間違った場合
(上記の Project_Name を変更のとこを変更忘れてた場合とか)
すべてのイメージとボリュームを削除する
sail down --rmi all -v
プロジェクト名だけ変える方法
DB の名前とかもプロジェクト名に紐付いているので、基本的にプロジェクト名の変更はできないと思ってたほうがいいかも
2.ログイン breeze いれる
./vendor/bin/sail composer require laravel/breeze --dev
./vendor/bin/sail php artisan breeze:install api
3.テーブルの作成
テーブルの作成(マイグレーションファイル)と factory と model ができる
./vendor/bin/sail artisan make:model Channel -m --factory
マイグレーションファイルのみ
./vendor/bin/sail artisan make:migration create_channels_table
マイウレーションファイルに書き込んで、
マイグレートして、テーブルを作成
./vendor/bin/sail artisan migrate
テーブルの再作成
リリース後にやったらデータ全部消えるので開発段階でのみ。
sail artisan migrate:fresh
テーブル内容のみ再作成
リリース後にやったらデータ全部消えるので開発段階でのみ。
sail artisan migrate:refresh
--seedオプションを付けてリフレッシュした後にシーダーの登録も可能。
4.Model の作成
--factory で Factory(データの自動生成を行うクラスも作ってくれる)
./vendor/bin/sail artisan make:model Channel --factory
-m をつければ、Model を作るときに、マイグレーションファイルも一緒につくることができる。
./vendor/bin/sail artisan make:model Channel -m
5.seeder でダミーデータを作る
./vendor/bin/sail artisan make:seeder LocalSeeder
でローカルシーダーを作る。
開発環境によってシーダーを使い分けることができるらしい。
seeder でダミーデータを作る。
faker はフェイクデータをランダムで生成する処理。
factory すでに作ってたら、そこにどんなデータ作るか書く
./vendor/bin/sail artisan migrate --seed
コントローラの作成
./vendor/bin/sail php artisan make:controller Api/ChannelController --resource
--resource をつけると、CRUD の操作に関する関数を一通りつくってくれる
API リソースの作成
./vendor/bin/sail artisan make:resource ChannelResource
app/Http/Resources/にファイルができる。
コントローラではこんな感じで書く
return ChannelResource::collection($channels);
毎回 data で梱包されないように、
app/Providers/AppServiceProvider.php
を編集する。
namespace App\Providers;
+ use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Support\ServiceProvider;
// 省略
public function boot()
{
- //
+ JsonResource::withoutWrapping();
}
サーバーの操作
php artisan migrate:fresh --seed
執筆中、、、、、、
Discussion