- 1. 概要
- 2. ルート定義
- 3. コントローラ
- 4. 再起動
- 5. 参考サイト
1. 概要
「API」出力するコンテンツを作成してみます。
サーバが「example.com」として「https://example.com:8080/」へアクセスするものとします。
コントローラのファイル名を「app/Http/Controllers/Api/MessageController.php」とします。
2. ルート定義
プロジェクトの管理ユーザで、プロジェクトディレクトリへ移動して。
vi routes/api.php
下記を記述します。
<?php
use Illuminate\Support\Facades\Route;
Route::get('/hello', function () {
return response()->json([
'message' => 'Hello from Laravel API!',
'time' => now()->toDateTimeString()
]);
});
Route::post('/echo', function (\Illuminate\Http\Request $request) {
return response()->json([
'received' => $request->all(),
'status' => 'OK'
]);
});
3. コントローラ
前項の状態で。
php artisan make:controller Api/MessageController
INFO Controller [app/Http/Controllers/Api/MessageController.php] created successfully.
vi app/Http/Controllers/Api/MessageController.php
下記の内容となっています。
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class MessageController extends Controller
{
//
}
これを下記へ、変更します。
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class MessageController extends Controller
{
private static $messages = [
['id' => 1, 'user' => 'Alice', 'text' => 'Hello from server!'],
['id' => 2, 'user' => 'Bob', 'text' => 'Hi Alice!']
];
public function index()
{
return response()->json(self::$messages);
}
public function store(Request $request)
{
$validated = $request->validate([
'user' => 'required|string',
'text' => 'required|string',
]);
$newMessage = [
'id' => count(self::$messages) + 1,
'user' => $validated['user'],
'text' => $validated['text'],
];
self::$messages[] = $newMessage;
return response()->json($newMessage, 201);
}
}
4. 再起動
「apache」の設定をチェックしておきます。
sudo service apache24 configtest
キャッシュをクリアします。
sudo -u www php /usr/local/www/laravel/artisan cache:clear
sudo -u www php /usr/local/www/laravel/artisan config:clear
sudo -u www php /usr/local/www/laravel/artisan optimize:clear
この時点で、ルートが通っているかは、プロジェクトディレクトリで。
sudo -u www php artisan route:list
この結果、およそ、下記のような表示となりまして。
GET|HEAD / ..................................................................................................
POST api/echo ...........................................................................................
GET|HEAD api/hello ..........................................................................................
GET|HEAD sample .............................................................................................
GET|HEAD storage/{path} ....................................................................... storage.local
GET|HEAD up .................................................................................................
Showing [6] routes
「POST api/echo」「GET|HEAD api/hello」「GET|HEAD sample」のルートが存在すれば、よしとします。
「apache」を再起動。
sudo service apache24 restart
5. 参考サイト
本ページは、「ChatGPT」くんを参考にさせていただきました。
|