LoginSignup
12
13

More than 3 years have passed since last update.

LaravelでサクッとAPIサーバーを立てる

Last updated at Posted at 2020-11-14

初めに

最近、React/Redux開発をするようになり、勉強のためにAPIサーバーを立てたいと思い、Laravelでさくっと、簡単なAPIサーバー立てようというのが、本記事の主旨となります。

対象者

ReactやVueを勉強していて、自分でAPI作成して学習したい方
取り敢えず、LaravelでAPIをさくっと作る流れが知りたい方

Laravel 新規プロジェクトを作成する

まず、新規でLaravelプロジェクトを作成しましょう。

laravelをインストール
composer create-project "laravel/laravel=6.*" laravelapi

ModelとMigrationファイルを作成

ここでは、良くあるArticleモデルのケースで作成していきます。

因みにここでは、Modelsディレクトリを切って作成しています。
同じように進めたい場合は、以下記事を参考にしてみて下さい。
[Laravel 6] Modelsディレクトリを作る

(因みに8系からModelsディレクトリはデフォルトで作成されます。)

titlebodyカラムを追加します。

ArticleModelを作成する
php artisan make:model Models/Article -m
public function up()
{
    Schema::create('articles', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('title');
        $table->text('body');
        $table->timestamps();
    });
}

以下、コマンドでDBに反映しましょう。

php artisan migrate

ArticleControllerを作成する

php artisan make:controller Api/ArticlesController -r

アクションを定義します。

ArticlesController.php
public function index()
{
    $articles = Article::all();
    return $articles;
}

public function store(Request $request)
{
    $article = new Article;
    $article->title = $request->title;
    $article->body = $request->body;
    $article->save();
}

public function show($id)
{
    $article = Article::find($id);
    return $article;
}

public function update(Request $request, $id)
{
    $article = Article::find($id);
    $article->title = $request->title;
    $article->body = $request->body;
    $article->save();
}

public function destroy($id)
{
    $article = Article::find($id);
    $article->delete();
}

ルーティングを設定する

APIのルーティングは、api.phpに記述します。

api.php
Route::group(['middleware' => ['api']], function(){
    Route::resource('articles', 'Api\ArticlesController', ['except' => ['create', 'edit']]);
});

テストデータを作成

最後にテストデータを追加しましょう。

php artisan make:seeder ArticlesTableSeeder
ArticlesTableSeeder.php
public function run()
{
    DB::table('articles') -> insert([
        [
            'title' => 'React',
            'body' => 'hoge...'
        ],
        [
            'title' => 'Redux',
            'body' => 'fuga...'
        ],
    ]);
}
DatabaseSeeder.php
public function run()
{
     $this->call(ArticlesTableSeeder::class);
}
php artisan db:seed

以上でAPI実装の一通りの作業は完了です。

終わりに

簡素なものですが、この流れで、APIを作ることができます。
動作確認はPostmanなどで確認してみましょう。

次はこれを利用して、ReactからこのAPIを叩いてみます。
CORSを理解しながら、ReactからLaravelのAPIサーバーを叩く

12
13
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
12
13