Laravelで REST API を実装する

2020年2月12日

PHP

Laravelで REST API を実装してみます。

 

titleとauthorカラムを持つbooksテーブルを作成し、フォームリクエストでバリデーションを実装したAPIを作成します。またそのAPIに対してcurlによってPOST・GET・PUT・DELETEによるデータの新規作成、編集等の機能を確認します。

 

本記事とは実装手順がほぼ同じですが、ビュー(テンプレート)によるフォーム画面を用意したCRUD機能の実装に関しては下記関連ページもご覧下さい。

 

CRUDを実装する

 

 

あらかじめsample01データベースを用意しておいて下さい。本記事ではMySQLを利用します。.envに適当な値を設定します。

 

.env

 

データベース接続に関しては下記のページもご覧下さい。

MySQLと接続し一覧表示 [DBクラス]

 

 

モデルの作成


 

モデルとマイグレーションファイルを作成します。

 

 

以上でbooksテーブルに対応したモデル(app/Book.php)とマイグレーションファイルが生成されるので、それぞれ下記のように追記します(ハイライト部分)。

 

app/Book.php

fillableでデータ登録の際の複数代入のホワイトリストを追記しておきます。これを設定しないと後に作成するコントローラーの下記の箇所でエラーとなります。

 

 

database/migrations/2020_02_10_020219_create_books_table.php

 

マイグレーションを実行します。

 

完了するとbooksテーブルが生成されているのが確認できます。

 

 

コントローラーの作成


 

次に–resourceを付けてコントローラーファイルを作成します。

 

api.phpに下記コードを追記します。/api/books/〜というエンドポイントになります。

routes/api.php

 

設定されているルート情報を確認します。

 

作成したコントローラーファイルにすでに用意されている index() / store() / show()  / update() / destroy() のメソッドを利用します。下記のように追記します。

 

app/Http/Controllers/BookController.php

22行目

JSON_UNESCAPED_UNICODEを設定することによりレスポンスのJSONが日本語で表示されるようにしています。

 

41行目

後述するフォームリクエストによるバリデーション(StoreBook)の設定をしています。下記関連ページもご覧下さい。
 

フォームリクエストでバリデーションを実装する

 

 

 

バリデーション


 

フォームリクエストクラスを作成し、生成されたファイルに下記のように編集します(ハイライト部分)。

 

app/Http/Requests/StoreBook.php

43〜50行目

バリデーションのエラーをJSONで返します。

 

 

curlで作成・取得・編集・削除


 

実際にcurlコマンドでAPIを叩いてみます。curl自体については下記関連ページもご覧下さい。

 

curlコマンドを利用する[POST][JSON][COOKIE]

 

新規作成(POST)

 

すべてのレコードを確認(GET)

 

idが1のレコードを確認

 

まだ存在しないidの場合は下記のようなJSONが返ってきます。

 

編集(PUT)

もしauthorが未入力だと下記のようなJSONが返ってきます。

 

削除(DELETE)

存在しないレコードを削除しようとした場合は下記のようなJSONが返ってきます。

 

 

関連ページ

Laravel 6とVue.jsでSPA構築 最速入門

 

 

 

LINEで送る
Pocket

定番本
定期
Copyright © 2020 思考の葉 All Rights Reserved.  プライバシーポリシー