[laravel API] API機能を超簡単に作る

laravelをAPIサーバとして使用する時の最少構成というか、他の解説だとミグレーションも同時に扱ったりしてますが、それすら使わない、簡素なModelで作るコントローラーについて解説しようと思います。

Modelの準備

コマンドを使って作成します。頭は大文字で大丈夫です。データベース側は大文字小文字関係ないので。

php artisan make:model Entities/モデル名

Entitiesのパスも指定する必要があるので気をつけてください。
そしてGuardedを設定します。ここに記述した列はCreate時に値を指定できなくなります。

protected $guarded = ['updated_at', 'created_at'];

上記の2つの項目は自動で作成される項目です。こちらでは特に意識しなくてもLaravelが自動で時間情報を更新してくれるのです。

Controllerの準備

こちらもコマンドでオッケーです。

php artisan make:controller モデル名Controller --api

こちらはパスの指定はなくていいです。コントローラー名は「モデル名+Controller」がキレイかと思われます。

中を見てみると、骨組みが出来上がっている状態なので、各処理を実装する必要があります。

データベースへのアクセス機能を作る

まずは先ほど作成したControllerを開き、下記2行をuseに追加してください。

use Illuminate\Support\Facades\DB;
use App\Entities\モデル名;

以下、自分はtimelinesという名前でModel及びテーブルを作成したとします。また、データベースとの接続設定は別の機会に紹介します。今回そちらはうまくいっている前提です。

Controllerがうまく機能しているか見たいだけなら、固定文字列を返せば良いだけなので、適宜置き換えて見てください。

    public function index()
    {
        $timelines = DB::select('select * from timelines');
        return response()->json($timelines, 200);
    }

ルーティング設定

次にルータの設定をします。このルータには1行でLaravelがいい感じにしてくれる記述があるのですが、それを使うとセキュリティ的に良く無いそうなので、細かく設定できる方法で行います。

routes/api.phpの下の方に以下の記述を追加してください。

//timelines_table
Route::get('timelines/all','TimelineController@index');

解説すると、
getはHTTPメソッドの種類を表しています。
timelines/allというURLにアクセスした時、TimelineControllerクラスのindexメソッドを実行するという内容です。

パラメータの指定等もここでできます。詳しい解説は長くなるので別の記事で書こうかと思います。

まとめ

LaravelでのAPI機能は感覚的に作れるので楽ですね。これからしっかりと学習して使いこなせる様になっていこうと思います。