[PHP] Laravel5.6で、サクッとRESTful APIを作成する
こんにちは、@yoheiMuneです。
PHPのWebフレームワークの1つであるLaravelでは、簡単にRESTfulAPIを作ることができます。今日はその作り方をブログに書きたいと思います。
詳しくはGoogle検索(restful + api + とは)などで調べてみてください。
例えば
https://www.getpostman.com/
最後になりますが本ブログでは、PHP、フロントエンド、サーバー、Swift、Node.js、Python、Java、Linux、インフラ、Go言語、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSやTwitterをフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!
PHPのWebフレームワークの1つであるLaravelでは、簡単にRESTfulAPIを作ることができます。今日はその作り方をブログに書きたいと思います。
目次
対象バージョン
今回はLaravelのv5.6以上を対象としています。以前のバージョンでもだいたい同じですが、一部コマンドが違うところもあるので、適宜読替えをお願いします。RESTfulAPIとは
データベースに格納している1つ1つのモデルに対して、CRUD(Create / Read / Update / Delete)を提供する設計思想です。例えばユーザーテーブル(User)があったとして、それに対して以下のようなAPIを作成します。# 一覧取得 GET /api/users # IDを指定して1つ取得 GET /api/users/{id} # 新規作成 POST /api/users # 更新(PUTやPATCHが使われる) PUT /api/users/{id} PATCH /api/users/{id} # 削除 DELETE /api/users/{id}Webアプリケーションの役割はデータのCRUDを扱うことがほとんどなので、RESTfulなAPIをベースにサーバーを開発するとシンプルで分かりやすい実装ができます。
詳しくはGoogle検索(restful + api + とは)などで調べてみてください。
LaravelでRESTful APIを作成する
コントローラーの作成と、ルーティングの定義の2つの手順を行います。コントローラーを作成する
artisan
でコントローラーを作る際に--resource
パラメータをつけると、RESTfulに対応したControllerを作ることができます。# RESTful API を満たすコントローラーを作る $ php artisan make:controller OwnerController --resourceそうすると、以下のようにRESTfulに対応したメソッドを持つ、コントローラーが作成されます。
class OwnerController extends Controller { // 一覧取得. public function index() { } // 新規作成. public function store(Request $request) { } // 1件取得. public function show($id) { } // 更新. public function update(Request $request, $id) { } // 削除. public function destroy($id) { } // その他に、画面を表示するための「create」や「edit」も作成されるが、 // ここでは省略. }
ルーティングを定義する
続いてルーティングの定義です。routes/api.php
に以下の記載を追加します。// ownersのREST APIを定義. Route::resource('owners', 'OwnerController');上記を記述したのちに
php artisan route:list
を実行すると、ルーティングが追加されていることが確認できます。# ルーティングの確認 $ php artisan route:list +--------+-----------+-------------------------+----------------+----------------------------------------------+--------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+-----------+-------------------------+----------------+----------------------------------------------+--------------+ | | GET|HEAD | api/owners | owners.index | App\Http\Controllers\OwnerController@index | api | | | POST | api/owners | owners.store | App\Http\Controllers\OwnerController@store | api | | | GET|HEAD | api/owners/{owner} | owners.show | App\Http\Controllers\OwnerController@show | api | | | PUT|PATCH | api/owners/{owner} | owners.update | App\Http\Controllers\OwnerController@update | api | | | DELETE | api/owners/{owner} | owners.destroy | App\Http\Controllers\OwnerController@destroy | api | +--------+-----------+-------------------------+----------------+----------------------------------------------+--------------+ ※必要ないルーティングの表示は省略していますこれでRESTful APIの定義を行うことができました。
試しに動かしてみる
php artisan serve
でサーバーを起動します。例えば
OwnerController.php
のindex()
メソッドで、以下のように実装してみます。public function index() { return response()->json([ [ 'name' => 'Yohei' ] ]); }そしてAPIを実行してみると、レスポンスが返ってくることが確認できます。
$ curl http://localhost:8000/api/owners [{"name":"Yohei"}]あとは、コントローラーの中を要件に合わせて実装すれば、APIは完成です。
参考までに
APIの開発ではGET
以外に、POST
やPUT
などのHTTPメソッドを使う必要があります。ブラウザやターミナルからの実行は面倒なので、Postmanという開発支援ツール(無料)を使うと便利です。https://www.getpostman.com/
最後に
Laravelで何個かアプリを作ろうかなーと思って、色々と実装しています。実装で調べたことは都度ブログに書けたらいいなぁ〜。最後になりますが本ブログでは、PHP、フロントエンド、サーバー、Swift、Node.js、Python、Java、Linux、インフラ、Go言語、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSやTwitterをフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!