Web アプリ入門 / ch06 — 簡易ルーター (REQUEST_METHOD + REQUEST_URI 分岐) / 演習 03
📝 ドリル 03 — method + URI の組で分岐 (REST 風)
問題
$_SERVER['REQUEST_METHOD'] と $_SERVER['REQUEST_URI'] の組み合わせで、次の通り応答する PHP を書いてください。
GET /users→"一覧表示"を 1 行出力POST /users→"新規登録"を 1 行出力- それ以外 →
"404"を 1 行出力
採点ランナーは CLI 直実行なので、冒頭で stdin の 1 行目を method、2 行目を URI として $_SERVER に代入してください。
このドリルの入力例:
POST
/users
期待される出力:
新規登録
採点
php scripts/grade.php topics/12-web/ch06-routing-basic/drill/03-method-uri/
ヒント
$_SERVER['REQUEST_METHOD'] = trim(fgets(STDIN) ?: '');
$_SERVER['REQUEST_URI'] = trim(fgets(STDIN) ?: '');
$key = $_SERVER['REQUEST_METHOD'] . ' ' . $_SERVER['REQUEST_URI'];
echo match ($key) {
'GET /users' => "一覧表示\n",
'POST /users' => "新規登録\n",
default => "404\n",
};「METHOD URI という文字列にまとめて 1 つの match で捌く」が小ぶりなアプリのお決まりパターン。
テストケース
標準入力
POST
/users
期待される出力
新規登録
📄 starter.php(雛形)
このコードから書き始めてください。
<?php
// 採点用スタブ: 標準入力の 1 行目を method、2 行目を URI として読み込む
$_SERVER['REQUEST_METHOD'] = trim(fgets(STDIN) ?: '');
$_SERVER['REQUEST_URI'] = trim(fgets(STDIN) ?: '');
// TODO: GET /users → "一覧表示", POST /users → "新規登録", それ以外 → "404"
✅ 解答例を見る(自分で解いてから)
<?php
// 採点用スタブ: 標準入力の 1 行目を method、2 行目を URI として読み込む
$_SERVER['REQUEST_METHOD'] = trim(fgets(STDIN) ?: '');
$_SERVER['REQUEST_URI'] = trim(fgets(STDIN) ?: '');
$key = $_SERVER['REQUEST_METHOD'] . ' ' . $_SERVER['REQUEST_URI'];
echo match ($key) {
'GET /users' => "一覧表示\n",
'POST /users' => "新規登録\n",
default => "404\n",
};