Lraravelの送受信をまとめたクラス。
Request クラス :Laravelが受信したデータ(プロパティ)とその処理(関数)を
まとめたクラス
HTTP リクエスト(クライアントからの入力)
Response クラス :Laravelが送信するデータ(プロパティ)とその処理(メソッド)を
まとめたクラス
TTP レスポンス(サーバーからの出力)
Request クラス
- 目的: クライアント(ブラウザや API クライアントなど)から送信されるデータ
やメタ情報を取得し、それを処理するために使用します。 - 主な機能: 入力データの取得、リクエスト情報の取得、データの検証。
主な役割
- 入力データの取得
- フォームデータ(POST データ)、クエリパラメータ、JSON データ、
アップロードされたファイルを取得。
- フォームデータ(POST データ)、クエリパラメータ、JSON データ、
- リクエスト情報の取得
- HTTP メソッド、URL、ヘッダー、クライアントの IP アドレスなどを取得。
- バリデーション
- リクエストデータを検証し、正しいデータのみを処理。
- リクエストメタ情報の解析
- リクエストがどこから来たのか、どのような形式のデータが送信されたかを把握。
使用例
リクエストからデータを取得して処理するコントローラの例:
use Illuminate\Http\Request;
class ExampleController extends Controller
{
public function handleRequest(Request $request)
{
$name = $request->input('name'); // クライアントから送信された 'name' パラメータを取得
$email = $request->input('email');
$method = $request->method(); // HTTP メソッドを取得 (例: GET, POST)
return response()->json([
'name' => $name,
'email' => $email,
'method' => $method,
]);
}
}
Response クラス
- 目的: サーバーからクライアントにデータを返す(出力)ために使用します。
- 主な機能: データのレスポンス、ヘッダーの設定、ステータスコードの設定。
主な役割
- レスポンスの送信
- クライアントに対して HTML、JSON、XML、ファイルなどを送信。
- ステータスコードの設定
- HTTP ステータスコード(200 OK, 404 Not Found など)を設定。
- カスタムヘッダーの設定
- レスポンスヘッダーを追加または変更。
- リダイレクトやビューの返却
- 特定の URL へのリダイレクトやテンプレートエンジンを用いた HTML を返却。
使用例
データを JSON 形式で返すコントローラの例:
use Illuminate\Http\Response;
class ExampleController extends Controller
{
public function handleResponse()
{
$data = [
'message' => 'Hello, this is a response!',
'status' => 'success',
];
return response()->json($data, 200); // JSON データを HTTP ステータス 200 で返す
}
}
レスポンスのカスタマイズ例:
use Illuminate\Http\Response;
class ExampleController extends Controller
{
public function customResponse()
{
return response('Custom Response Body', 201) // レスポンス本文とステータスコードを指定
->header('Content-Type', 'text/plain'); // レスポンスヘッダーを設定
}
}
Request クラスと Response クラスの主な違い
| 項目 | Request クラス | Response クラス |
|---|---|---|
| 役割 | クライアントからの入力を処理する。 | サーバーからの出力をクライアントに返す。 |
| 主な使用場面 | 入力データの取得、バリデーション、リクエスト情報の解析。 | レスポンスデータの送信、ステータスコードやヘッダーの設定。 |
| データの流れ | クライアント → サーバー。 | サーバー → クライアント。 |
| 取得する内容 | リクエストデータ、メタ情報(メソッド、ヘッダーなど)。 | レスポンスデータ、ステータスコード、ヘッダー。 |
| 主なメソッド | input(), query(), all(), method() など。 | json(), view(), header(), redirect() など。 |
| 対象 | クライアントが送信するリクエストを処理。 | サーバーがクライアントに返すレスポンスを処理。 |
実際の例: Request と Response の連携
- クライアントがフォームを送信。
- サーバーで
Requestクラスを使い、入力を処理。 - 処理結果を
Responseクラスでクライアントに返す。
use Illuminate\Http\Request;
class ExampleController extends Controller
{
public function processForm(Request $request)
{
// 1. Request: データを取得
$name = $request->input('name');
$email = $request->input('email');
// 2. ビジネスロジック: データを処理
if (empty($name) || empty($email)) {
return response()->json([
'error' => 'Name and Email are required!',
], 400); // バリデーション失敗時は 400 ステータスを返す
}
// 3. Response: 結果を返す
return response()->json([
'message' => 'Form processed successfully!',
'data' => [
'name' => $name,
'email' => $email,
],
], 200);
}
}
まとめ
Requestクラス: クライアントからの入力を処理する役割
(リクエストデータの取得や検証)。Responseクラス: クライアントへの出力を処理する役割
(レスポンスデータの返却やカスタマイズ)。
リクエストが「サーバーにデータを渡すため」、レスポンスが「サーバーから結果を返すため」
に利用されることを覚えておけば、用途を区別しやすいです!

