APIのルーティングではGET, POST, PUT, DELETEといったHTTPリクエストに応じたコントローラーの関数を作ってくれるため、 Laravelでは統一感のあるRESTなAPIを手早く作れます。
exceptとonlyを指定することで、不要なリクエストは制限しておくべきです。
- Laravel 5.8で確認
APIルーティングとアクション
/routes/api.phpに以下のようなAPIを作ってみました。
Route::resource('/user', 'Api\UsersController');
この状態でルーティングを表示するコマンド$ php artisan route:list -v`を叩くと以下のようになります。
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+------------------------------+------------------+---------------------------------------------------------+------------+
| | GET|HEAD | / | | App\Http\Controllers\Web\HomeController@index | web |
| | POST | api/user | user.store | App\Http\Controllers\Api\UserController@store | api |
| | GET|HEAD | api/user | user.index | App\Http\Controllers\Api\UserController@index | api |
| | GET|HEAD | api/user/create | user.create | App\Http\Controllers\Api\UserController@create | api |
| | DELETE | api/user/{user} | user.destroy | App\Http\Controllers\Api\UserController@destroy | api |
| | PUT|PATCH | api/user/{user} | user.update | App\Http\Controllers\Api\UserController@update | api |
| | GET|HEAD | api/user/{user} | user.show | App\Http\Controllers\Api\UserController@show | api |
| | GET|HEAD | api/user/{user}/edit | user.edit | App\Http\Controllers\Api\UserController@edit | api |
+--------+-----------+------------------------------+------------------+---------------------------------------------------------+------------+
7つのアクションの関数が作成されました。 毎回すべて使うことはないため、onlyとexceptで制限します。
only
onlyは利用するアクションだけ指定できます。
書き方は['only' => [利用するアクション]]
です。
// indexとstoreのみ利用する
Route::resource('/user', 'Api\UsersController', ['only' => ['store','index']]);
この場合のroute:listは以下のようになり、store
とindex
に絞れました。
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+------------------------------+------------------+---------------------------------------------------------+------------+
| | GET|HEAD | / | | App\Http\Controllers\Web\HomeController@index | web |
| | POST | api/user | user.store | App\Http\Controllers\Api\UserController@store | api |
| | GET|HEAD | api/user | user.index | App\Http\Controllers\Api\UserController@index | api |
+--------+-----------+------------------------------+------------------+---------------------------------------------------------+------------+
except
onlyとは逆に、除外するアクションを指定します。
書き方は['only' => [除外するアクション]]
です。
// editとcreateは不要
Route::resource('/user', 'Api\UsersController', ['except' => ['edit','create']]);
この場合のroute:listは以下のようになり、edit
とcreate
は除外されます。
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+------------------------------+------------------+---------------------------------------------------------+------------+
| | GET|HEAD | / | | App\Http\Controllers\Web\HomeController@index | web |
| | POST | api/user | user.store | App\Http\Controllers\Api\UserController@store | api |
| | GET|HEAD | api/user | user.index | App\Http\Controllers\Api\UserController@index | api |
| | DELETE | api/user/{user} | user.destroy | App\Http\Controllers\Api\UserController@destroy | api |
| | PUT|PATCH | api/user/{user} | user.update | App\Http\Controllers\Api\UserController@update | api |
| | GET|HEAD | api/user/{user} | user.show | App\Http\Controllers\Api\UserController@show | api |
+--------+-----------+------------------------------+------------------+---------------------------------------------------------+------------+
参考
Laravelのおすすめ参考書
こちらの書籍でLaravelの全体像が分かりやすいです。 MVCの概念の説明から開発環境の構築、Laravelの基本的な機能について学べます。
- バージョン:Laravel 5.4
- OS:Windows, Mac OS対応
注意:HTML/CSSが解かる人向けです。基本からちょっと外れたこと(既存のDBを使う方法など)は載っていません。
laravel newコマンドでbash:laravel:command not found
Laravelschedule2020-10-05
LaravelのModelsのディレクトリ構成を変更する
Laravelschedule2020-09-02
【Laravel】UserAgentでガラケー用のViewを切り替えるためのmiddleware
Laravelschedule2020-04-21
PHP Warning Illegal string offset 'foo'
PHPschedule2020-02-03