レスポンスとは
コントローラーやルートは、ユーザーのブラウザへ何らかのレスポンスを返す必要があります。 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引数はビューへ渡すデータの配列です。
response()->view() で詳細を制御する
ステータスコードやヘッダーも一緒に指定したい場合は response()->view() を使います。
リダイレクト
基本的なリダイレクト
redirect() ヘルパーはリダイレクトレスポンスを返します。
フォーム送信後に別ページへ誘導する際によく使います。
名前付きルートへのリダイレクト
route() 関数を使うと、URLを直接書かずにルート名でリダイレクト先を指定できます。
URLが変わっても修正不要になるため、名前付きルートを活用するのがベストプラクティスです。
直前のページへ戻る
back() でユーザーが直前にいたページへ戻れます。
バリデーション失敗時のリダイレクトによく使われます。
フラッシュメッセージ付きのリダイレクト
with() でセッションにメッセージを付けてリダイレクトできます。
フォーム送信成功後のメッセージ表示に便利です。
JSONレスポンス
APIを作る場合にはresponse()->json() を使ってJSONレスポンスを返します。
Content-Type: application/json ヘッダーが自動的に設定されます。
単純に配列やEloquentモデルをReturnするだけでもJSONレスポンスになりますが、
response()->json() を使うとステータスコードやヘッダーを細かく制御できます。レスポンスヘッダー
header() メソッドでレスポンスにHTTPヘッダーを追加できます。
withHeaders() を使います。
実践例:コントローラーでの使い分け
用途に応じたレスポンスの使い分けをまとめた例です。1
ルートの定義
2
コントローラーの実装
次のステップ
バリデーション
レスポンスを返す前に、入力データをバリデーションで検証する方法を確認します。