Skip to main content

レスポンスとは

コントローラーやルートは、ユーザーのブラウザへ何らかのレスポンスを返す必要があります。 Laravelは文字列・配列・ビュー・リダイレクト・JSONなど、様々な形式のレスポンスをシンプルに返せる仕組みを提供しています。

基本的なレスポンス

文字列を返す

最もシンプルなレスポンスは文字列の返却です。 Laravelは自動的に適切なHTTPレスポンスに変換します。

配列を返す

配列を返すと、LaravelはそれをJSON形式に自動変換してレスポンスします。
EloquentモデルやコレクションをそのままReturnするとJSON形式に自動変換されます。APIを手軽に作れるのでよく使われるパターンです。

Eloquentモデルを返す

Responseオブジェクト

response() ヘルパーを使うと、HTTPステータスコードやヘッダーを指定した詳細なレスポンスを返せます。
response() の第1引数はレスポンスのボディ、第2引数はHTTPステータスコードです。

よく使うHTTPステータスコード

ビューのレスポンス

コントローラーからBladeテンプレートを表示するには view() を使います。 これがWebアプリケーションにおける最も一般的なレスポンスです。
view() の第1引数はビュー名、第2引数はビューへ渡すデータの配列です。
戻り値の型ヒントに Illuminate\View\View を指定すると、コードの意図が明確になります。

response()->view() で詳細を制御する

ステータスコードやヘッダーも一緒に指定したい場合は response()->view() を使います。

リダイレクト

基本的なリダイレクト

redirect() ヘルパーはリダイレクトレスポンスを返します。 フォーム送信後に別ページへ誘導する際によく使います。
コントローラーでの使用例です。

名前付きルートへのリダイレクト

route() 関数を使うと、URLを直接書かずにルート名でリダイレクト先を指定できます。 URLが変わっても修正不要になるため、名前付きルートを活用するのがベストプラクティスです。

直前のページへ戻る

back() でユーザーが直前にいたページへ戻れます。 バリデーション失敗時のリダイレクトによく使われます。

フラッシュメッセージ付きのリダイレクト

with() でセッションにメッセージを付けてリダイレクトできます。 フォーム送信成功後のメッセージ表示に便利です。
Bladeテンプレートでメッセージを表示します。

JSONレスポンス

APIを作る場合には response()->json() を使ってJSONレスポンスを返します。 Content-Type: application/json ヘッダーが自動的に設定されます。
ステータスコードも指定できます。
コントローラーでの使用例です。
単純に配列やEloquentモデルをReturnするだけでもJSONレスポンスになりますが、response()->json() を使うとステータスコードやヘッダーを細かく制御できます。

レスポンスヘッダー

header() メソッドでレスポンスにHTTPヘッダーを追加できます。
複数のヘッダーをまとめて設定する場合は withHeaders() を使います。

実践例:コントローラーでの使い分け

用途に応じたレスポンスの使い分けをまとめた例です。
1

ルートの定義

2

コントローラーの実装

Webアプリでは ViewRedirectResponse の使い分けが基本です。表示系のアクションは View、変更系(作成・更新・削除)のアクションは処理後に RedirectResponse を返すのが一般的なパターンです。

次のステップ

バリデーション

レスポンスを返す前に、入力データをバリデーションで検証する方法を確認します。
最終更新日 2026年3月29日