HTTP レスポンス
レスポンスの作成
文字列と配列
すべてのルートとコントローラーは、ユーザーのブラウザに返されるレスポンスを返す必要があります。Laravel では、さまざまな方法でレスポンスを返すことができます。最も基本的なレスポンスは、ルートまたはコントローラーか ら文字列を返すことです。フレームワークは自動的に文字列を完全な HTTP レスポンスに変換します:
Route::get('/', function () {
return 'Hello World';
});
ルートやコントローラーから文字列を返すだけでなく、配列を返すこともできます。フレームワークは自動的に配列を JSON レスポンスに変換します:
Route::get('/', function () {
return [1, 2, 3];
});
注記
Eloquent コレクションをルートやコントローラーから返すこともできることを知っていましたか?これらは自動的に JSON に変換されます。試してみてください!
レスポンスオブジェクト
通常、ルートアクションからは単純な文字列や配列を返すだけではありません。代わりに、完全な Illuminate\Http\Response
インスタンスやビューを返します。
完全な Response
インスタンスを返すことで、レスポンスの HTTP ステータスコードやヘッダーをカスタマイズすることができます。Response
インスタンスは Symfony\Component\HttpFoundation\Response
クラスを継承しており、さまざまな HTTP レスポンスを構築するためのメソッドが提供されています。
Route::get('/home', function () {
return response('Hello World', 200)
->header('Content-Type', 'text/plain');
});
Eloquent Models and Collections
ルートやコントローラからEloquent ORMモデルやコレクションを直接返すこともできます。これを行うと、Laravelはモデルとコレクションを自動的にJSONレスポンスに変換しますが、モデルの非表示属性を尊重します。
use App\Models\User;
Route::get('/user/{user}', function (User $user) {
return $user;
});