5日目
【技術テーマ】
PHPでAPI構築
言語
- PHP
- JavaScript
目標成果物
今日は前回までにためたデータJSONで返却するAPIを作りたいと思います。
コードと資料
1. PHP,composerの環境構築
PHPのインストール
brew install php@7.2
composertのインストール
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
これでだけで完結しました。
2. Lavavelでプロジェクト作成
下記のコマンドでLaravelでAPIのもととなるプロジェクトを構築します。
composer create-project --prefer-dist laravel/laravel photo_ac_graf
これだけでLaravelのプロジェクトができるので非常に簡単です。
この状態でプロジェクト内のフォルダに入って
cd photo_ac_graf
PHPを起動すると
php -S 127.0.0.1:8080 -t ./public
このようにLaravelの初期画面が表示されます。これでLaravelの構築は完了です。ここからは実際にコードを書いていきます。
3. データベースからデータを取得
プロジェクト直下にある「.env」ファイルのMySQLの部分を書き換えます。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=データベース名
DB_USERNAME=ユーザー名
DB_PASSWORD=パスワード
無心でコントローラーなどのファイルを手作業で作成していたのですが、よく考えたらコマンドで作成できたのでコマンドの方で作成していきます。
ルーティング
今回はAPIとしてレスポンスしたいので、routes配下のapi.phpに
Route::get('/logs', 'LogsController@index');
上記の1行を追加します。
モデルの作成
php artisan make:model Log
今回はとりあえずデーターすべて返せばいいかなって思ってるので、モデルファイルには特に何も書きません。
コントローラーの作成
php artisan make:controller LogsController
コントローラーにはデータを取得してJSONで返す記述をしたいので下記のように記述します。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Log;
class LogsController extends Controller
{
public function index(Request $request){
$logs = Log::all();
return response(array('result' => $logs));
}
}
動作確認
この状態でhttp://localhost:8080/api/logsにアクセスすると
{
"result": [
{
"id": 1,
"image_id": 2875969,
"download": 0,
"date": "2020-06-06"
},
{
"id": 2,
"image_id": 2875964,
"download": 0,
"date": "2020-06-06"
},
{
"id": 3,
"image_id": 2875028,
"download": 0,
"date": "2020-06-06"
},
{
"id": 4,
"image_id": 2875022,
"download": 0,
"date": "2020-06-06"
},
{
"id": 5,
"image_id": 2874964,
"download": 0,
"date": "2020-06-06"
},
.
.
.
略
こんな感じでデータを取得できます。
加工して返したほうがいいかなって思ったりもしたんですけど、一旦どの形式でデータが必要かはグラフを描画するライブラリ次第な気がしたのでこの状態での返却にします。
いやぁ...このLaravelの爆速感タマランですね....
Javaとかと比べて動作確認もリロードするだけですからね...やめられないですね...