はじめに
naritomoと申します。
本職はインフラエンジニアを行っています。
これまでアプリ領域の技術習得のため、各種言語の開発環境Dockerの構築を行ってきましたが、laravelでのアプリ第一号を作ってみましたので、公開したいと思います。
いろいろアドバイスいただけると嬉しいです。
開発概要
以下の仕様とします。
- API稼働フレームワークはPHP/Laravelを使用する。
- API入力は、以下のものを入力する。
- URLにクエリでJSONキーを指定する。(?key=key1)
- POSTボディーにJSONデータを入れる。
- API出力は以下のものとする。
- クエリで指定したJSONキーに対応した値をプレーンテキストで出力する。
事前準備
以下の記事を参考にPHP/Laravel開発環境を構築してること。
Laravelサイトを参照できること。
プロジェクトフォルダ(backend)に移動する。
API構築方法
APIソース作成
コントローラファイルを作成する。
vi app/Http/Controllers/ExampleController.php
ファイル内容
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ExampleController extends Controller
{
public function example(Request $request)
{
// クエリパラメータを取得
$key = $request->query('key');
// リクエストボディをJSONから配列に変換
$data = $request->json()->all();
// キーが存在する場合は、指定されたキーに対応する値を返す
if ($key && isset($data[$key])) {
return response($data[$key], 200)->header('Content-Type', 'application/json');
}
// キーが指定されていない場合は、すべてのデータを返す
return response()->json($data);
}
}
ルートファイルを開く。
vi routes/api.php
編集内容
以下の行を追記する。
use App\Http\Controllers\ExampleController;
Route::post('/json', [ExampleController::class, 'example']);
動作確認
新しいターミナルを立ち上げ、以下のコマンドを入力する。
curl -X POST -H "Content-Type: application/json" -d "{"name": "John", "age": "30"}" "http://localhost:8080/api/json?key=age"
30という値が返ってくること。
おわりに
Laravelでのアプリ開発第一歩として、JSONパーサーAPIを構築してみました。
この作成にはchatgptも利用して構築しています。
この記事がLaravelでのAPIを作ってみたい方の助けになればと思います。