| この記事の要点 |
|---|
|
Response オブジェクトの基本
Laravel の Controller は通常、HTTP レスポンスとして Response オブジェクトを返します。デバッグやテストでこの中身を確認する方法。
主要なメソッド
// レスポンスオブジェクトの構成要素
$response = response('Hello', 200, ['X-Custom' => 'value']);
// ボディ
echo $response->getContent();
// → "Hello"
// ステータスコード
echo $response->getStatusCode();
// → 200
// ヘッダ全件
print_r($response->headers->all());
// → ["content-type" => ["text/html; charset=utf-8"], "x-custom" => ["value"]]
// 個別ヘッダ
echo $response->headers->get('content-type');
// → "text/html; charset=utf-8"
// 全部見る
var_dump($response);
// JSON レスポンスの場合
echo $response->getData(true); // 配列として
echo $response->getContent(); // JSON 文字列として
外部 API を呼んだ場合(HttpClient)
use Illuminate\Support\Facades\Http;
$response = Http::get('https://api.example.com/users');
// ステータス
$response->status(); // 200
$response->successful(); // true (2xx)
$response->ok(); // true (200)
$response->failed(); // false
$response->clientError(); // false (4xx)
$response->serverError(); // false (5xx)
// ボディ
$response->body(); // 文字列
$response->json(); // 配列にデコード
$response->json('name'); // ネストしたキー取得
$response->object(); // stdClass オブジェクト
$response->collect(); // Collection
$response->resource(); // Stream リソース
// ヘッダ
$response->headers(); // 全件
$response->header('Content-Type'); // 個別
// Cookie
$response->cookies();
// 例外を投げる
$response->throw(); // 4xx/5xx ならエラー throw
テストでの確認
// PHPUnit / Pest テスト
public function test_user_list()
{
$response = $this->get('/users');
// dump (出力 + 続行)
$response->dump(); // レスポンス全体
$response->dumpHeaders(); // ヘッダのみ
$response->dumpSession(); // セッション
// dd (出力 + 終了)
$response->dd(); // 詳細出力して die
$response->ddHeaders();
$response->ddSession();
// アサーション
$response->assertStatus(200);
$response->assertOk();
$response->assertJson(['name' => 'Alice']);
$response->assertJsonStructure(['data' => ['id', 'name']]);
$response->assertHeader('X-Custom', 'value');
$response->assertSeeText('Hello');
$response->assertRedirect('/login');
}
ログ出力
use Illuminate\Support\Facades\Log;
// ステータス + ボディをログ
Log::info('Response', [
'status' => $response->status(),
'body' => $response->body(),
'headers' => $response->headers(),
]);
// HTTP クライアントの request/response をログするミドルウェア
Http::globalRequestMiddleware(function ($request) {
Log::info('HTTP Request', ['method' => $request->method(), 'url' => $request->url()]);
return $request;
});
Http::globalResponseMiddleware(function ($response) {
Log::info('HTTP Response', ['status' => $response->status(), 'body' => substr($response->body(), 0, 200)]);
return $response;
});
Tinker でインタラクティブ確認
$ php artisan tinker
>>> $response = Http::get('https://api.example.com/data')
=> Illuminate\Http\Client\Response { ... }
>>> $response->status()
=> 200
>>> $response->json()
=> [
"users" => [...],
]
>>> $response->headers()
=> [
"content-type" => ["application/json"],
...
]
# Telescope (laravel/telescope) で UI 経由でも確認可
カスタムレスポンスの構築
// 標準的なレスポンス構築
return response('Hello', 200);
return response('Not Found', 404);
// JSON
return response()->json(['name' => 'Alice'], 200);
// ヘッダ付き
return response('Hello', 200, ['X-Custom' => 'value']);
// チェーンで構築
return response('Hello')
->header('X-Foo', 'bar')
->cookie('session', 'abc123', 60)
->setStatusCode(201);
// ストリーミング
return response()->stream(function () {
echo 'streaming data...';
}, 200, ['Content-Type' => 'text/plain']);
// ダウンロード
return response()->download($pathToFile);
// JSON ファイル
return response()->json(...)->header('Cache-Control', 'no-cache');
// View
return response()->view('users.show', ['user' => $user]);
レスポンスマクロ(カスタム)
// AppServiceProvider::boot()
Response::macro('apiSuccess', function ($data, $message = 'OK') {
return response()->json([
'success' => true,
'message' => $message,
'data' => $data,
]);
});
// 利用
return response()->apiSuccess(['name' => 'Alice']);
関連記事
子ページ
子ページはありません
同階層のページ
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- プロジェクトをTomcatプロジェクトとして認識させる方法 2026-10-07 22:32:50
- MySQLの1366 Incorrect string value|Laravelの文字コード・絵文字エラー 2026-10-07 21:54:03
- curlの証明書ホスト名不一致|旧エラー51・現行60の確認と対処 2026-10-07 21:54:03
- LaravelのMassAssignmentException|fillableの原因と安全な対処 2026-10-07 21:54:03
- Eclipse で Tomcat の起動ログがコンソールに出ない時の確認手順 2026-10-07 21:54:02
- MySQLにおける中央値(Median)の導き方(バージョン8未満) 2026-10-07 13:49:45
- getInputForward 2026-10-07 13:41:15
- JSONから配列に変換 2026-10-07 13:41:15
- ビューから値をモデルに格納しコントローラーで受け取る方法 2026-10-07 13:23:41
- Laravelのテーブル作成と定義変更|マイグレーション・up/down・注意点 2026-10-07 13:23:41
- NumPy 配列に要素を追加する方法 (append / concatenate) 2026-10-07 13:23:41
- MariaDB・MySQLで現在日時を取得する方法|NOW・タイムゾーン・保存型 2026-10-07 13:13:36
- 【django】テンプレートで定数を使用する方法 2026-10-07 13:10:15
- Spring BootにおけるApplication.propertiesの環境依存設定の分割方法 2026-10-07 12:09:35
- Not supported for DML operations【Springエラー】 2026-10-07 11:09:38