5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

APIの理解を深めるためLaravelで簡単なAPIを作成してみた

Last updated at Posted at 2021-03-06

#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に記載していく。

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とアクセスユーザーを作成しておく。

.env
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配下にある。
テーブルを確認できたら下記の内容で作成する。

create_hoge_table.php
 $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
Hoge.php

<?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
HogeController.php
<?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が便利なのでお勧めする。

#参考サイト

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?