PHP でリクエストタイプを検出する (GET, POST, PUT, DELETE)
PHP では、HTTP リクエストのメソッド (GET, POST, PUT, DELETE など) を検出することができます。これにより、異なる操作に対応する適切な処理を実行できます。
$_SERVER['REQUEST_METHOD']
を使用
最も一般的な方法は、$_SERVER['REQUEST_METHOD']
スーパーグローバル変数を使用することです。この変数は、現在の HTTP リクエストのメソッドを文字列として返します。
例:
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
// GETリクエストの処理
} elseif ($_SERVER['REQUEST_METHOD'] === 'POST') {
// POSTリクエストの処理
} elseif ($_SERVER['REQUEST_METHOD'] === 'PUT') {
// PUTリクエストの処理
} elseif ($_SERVER['REQUEST_METHOD'] === 'DELETE') {
// DELETEリクエストの処理
} else {
// その他のリクエストの処理
}
filter_input()
関数を使用
filter_input()
関数を使用して、特定の入力フィルタを適用しながらリクエストメソッドを取得することもできます。
$requestMethod = filter_input(INPUT_SERVER, 'REQUEST_METHOD', FILTER_SANITIZE_STRING);
if ($requestMethod === 'GET') {
// GETリクエストの処理
} // ...
switch
ステートメントを使用
switch
ステートメントを使用して、複数の条件を効率的に処理することもできます。
switch ($_SERVER['REQUEST_METHOD']) {
case 'GET':
// GETリクエストの処理
break;
case 'POST':
// POSTリクエストの処理
break;
case 'PUT':
// PUTリクエストの処理
break;
case 'DELETE':
// DELETEリクエストの処理
break;
default:
// その他のリクエストの処理
}
注意:
- PUT や DELETE などのメソッドは、すべてのサーバーやクライアントでサポートされているとは限りません。適切な実装とテストが必要です。
- セキュリティのために、ユーザー入力は常に適切に検証およびサニタイズしてください。
PHP でリクエストタイプを検出する例
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
echo "GET リクエストです。";
} elseif ($_SERVER['REQUEST_METHOD'] === 'POST') {
echo "POST リクエストです。";
} elseif ($_SERVER['REQUEST_METHOD'] === 'PUT') {
echo "PUT リクエストです。";
} elseif ($_SERVER['REQUEST_METHOD'] === 'DELETE') {
echo "DELETE リクエストです。";
} else {
echo "その他のリクエストです。";
}
$requestMethod = filter_input(INPUT_SERVER, 'REQUEST_METHOD', FILTER_SANITIZE_STRING);
if ($requestMethod === 'GET') {
echo "GET リクエストです。";
} // ...
switch ($_SERVER['REQUEST_METHOD']) {
case 'GET':
echo "GET リクエストです。";
break;
case 'POST':
echo "POST リクエストです。";
break;
case 'PUT':
echo "PUT リクエストです。";
break;
case 'DELETE':
echo "DELETE リクエストです。";
break;
default:
echo "その他のリクエストです。";
}
これらのコードは、HTTP リクエストのメソッドを検出し、それに応じたメッセージを出力します。
- 実際のアプリケーションでは、リクエストメソッドに基づいて適切な処理を実行する必要があります。
match
式 (PHP 8.0 以降)
PHP 8.0 以降では、match
式を使用して、リクエストメソッドを検出することができます。
$requestMethod = $_SERVER['REQUEST_METHOD'];
$response = match ($requestMethod) {
'GET' => 'GET リクエストです。',
'POST' => 'POST リクエストです。',
'PUT' => 'PUT リクエストです。',
'DELETE' => 'DELETE リクエストです。',
default => 'その他のリクエストです。'
};
echo $response;
array_key_exists()
関数
array_key_exists()
関数を使用して、$_SERVER
スーパーグローバル変数に特定のキーが存在するかを確認することもできます。
if (array_key_exists('REQUEST_METHOD', $_SERVER) && $_SERVER['REQUEST_METHOD'] === 'GET') {
echo "GET リクエストです。";
} // ...
カスタム関数
リクエストメソッドを検出するためのカスタム関数を作成することもできます。
function getRequestMethod() {
return isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : null;
}
$requestMethod = getRequestMethod();
if ($requestMethod === 'GET') {
echo "GET リクエストです。";
} // ...
これらの方法は、$_SERVER['REQUEST_METHOD']
を使用する方法と同様の機能を提供しますが、異なるアプローチや利点があります。
match
式は、複数の条件を簡潔に表現できます。array_key_exists()
関数は、キーが存在するかを確認する際に便利です。- カスタム関数は、リクエストメソッドの検出をカプセル化し、再利用性を向上させることができます。
php http request