[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をフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!





