#Laravelで簡単なAPIを作成する
#実施環境
MAMP
- web server : apache
- PHP : 7.4.12
- laravel : 5.8.38
- myaql : 5.7.32
#API作成前の注意事項
laravel5.xと最新のLaravel8.xではルーティング設定のコードの書き方が異なるため、現状はバージョン8.xはおすすめしない。バージョン8.x系でやろうとしたが、ルーティング設定でハマってしまい、かなり時間を持ってかれた。また、最新(2020.09リリース)のためgoogleで調べてもなかなか情報が出てこないため、今回は業務で使用しているlaravelバージョン5.x系で実施した。
#1. ルーティング設定
APIのルーティングはroutes/api.php
に記載していく。
<?php
use Illuminate\Http\Request;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
Route::get('hoge','HogeController@index');
#2. テーブルの準備
事前にphpmyadminでDBとアクセスユーザーを作成しておく。
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=study_laravel //phpmyadminで登録したDB名
DB_USERNAME=aaa //phpmyadminで登録したユーザー名
DB_PASSWORD=abcd //phpmyadminで上記ユーザー名を登録する際に作成したパスワード
.envファイルを設定できたら次はartisanが存在しているディレクトリでコマンドを打つ
$ php artisan make:migration create_hoge_table
テーブルはdatabase/migrations
配下にある。
テーブルを確認できたら下記の内容で作成する。
$table->increments('id');
$table->string('hoge');
$table->timestamps();
その後、artisanコマンドで下記を実行
$ php artisan migrate
DBの接続ができたら、phpmyadminにアクセスして、hogeテーブルで下記クエリを実行する
INSERT INTO hoge (id, hoge, created_at, updated_at) VALUES (1, 'aaa', '2021_09_02','2021_09_05');
#3. モデル作成
テーブルが作成できたら作ったテーブルのデータにアクセスするためにモデルを作成する。
$ php artisan make:model hoge
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Hoge extends Model
{
protected $table = 'hoge';
protected $dates = ['created_at', 'updated_at'];
protected $id_hoge = ['id', 'hoge'];
}
#4. コントローラー作成
下記artisanコマンドを打ち、controllerを作成する。
$ php artisan make:controller Models/hogeController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\hoge;
class HogeController extends Controller
{
public function index()
{
return response(hoge::all());
}
}
サーバーを立ち上げる。
php artisan serve
下記URLにアクセスする。
http://127.0.0.1:8000/api/hoge
hogeテーブルの全件データがjson形式で返却されればOK!!
[{"id":1,"hoge":"aaa","created_at":"2021-09-02 00:00:00","updated_at":"2021-09-05 00:00:00"}]
#使用した便利なartisanコマンド
php artisan route:list //ルーティング設定がされているものを確認できる
php artisan --version //laravelのバージョンを確認できる
#Postman
今回は説明は省くがAPIのレスポンスの確認はPostmanが便利なのでお勧めする。
#参考サイト