📝
LaravelでAPIを作成してReactから叩く
GitHub リポジトリ
https://github.com/ENDOTAKUMI/sample-app
プロジェクトの構成
sample-app/
├── backend/
└── frontend/
インストール
Laravelのインストール
sample-app
ディレクトリで下記のコマンドを実行します
curl -s "https://laravel.build/backend" | bash
cd backend
./vendor/bin/sail up -d
✅ ブラウザで下記の画面が表示できればOK
Reactのインストール
sample-app
ディレクトリで下記のコマンドを実行します
npx create-react-app frontend
cd frontend/
npm start
✅ ブラウザで下記の画面が表示できればOK
実装
APIの作成
backend
ディレクトリで下記のコマンドを実行します
./vendor/bin/sail php artisan make:controller ExampleListController
backend/app/Http/Controllers/ExampleListController.php
<?php
namespace App\Http\Controllers;
class ExampleListController extends Controller
{
public function index()
{
return response()->json(
[
'content' => [
[
'id' => 1,
'name' => 'Example 1'
],
[
'id' => 2,
'name' => 'Example 2'
],
],
],
200,
[],
JSON_UNESCAPED_UNICODE
);
}
}
backend/routes/api.php
<?php
use App\Http\Controllers\ExampleListController;
use Illuminate\Support\Facades\Route;
Route::get('/example-list', [ExampleListController::class, 'index']);
✅ ブラウザで下記の画面が表示できればOK
http://localhost/api/example-list
ReactからAPIを叩いて表示する
frontend
ディレクトリで下記のコマンドを実行します
npm install axios
frontend/src/App.js
import React, { useEffect, useState } from "react";
import axios from "axios";
const App = () => {
const [value, setValue] = useState([]);
const API_URL = "http://localhost/api/example-list";
useEffect(() => {
(async () => {
try {
const res = await axios.get(API_URL);
setValue(res.data.content);
return;
} catch (e) {
return e;
}
})();
}, []);
return (
<div className="App">
{value.map((content) => {
return (
<div key={content.id}>
<h1>{content.name}</h1>
</div>
);
})}
</div>
);
};
export default App;
Discussion