写真ACのダウンロード数をグラフ化したい【APIサーバー構築編】 ~1日10行コーディング~
5日目
【技術テーマ】
PHPでAPI構築
言語
- PHP
- JavaScript
目標成果物
今日は前回までにためたデータJSONで返却するAPIを作りたいと思います。
コードと資料
1. PHP,composerの環境構築
PHPのインストール
brew install [email protected]
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とかと比べて動作確認もリロードするだけですからね...やめられないですね...
Author And Source
この問題について(写真ACのダウンロード数をグラフ化したい【APIサーバー構築編】 ~1日10行コーディング~), 我々は、より多くの情報をここで見つけました https://qiita.com/itaya/items/b0a905b4629c3d8f7acd著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .