この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:4
ページ更新者:T
更新日時:2026-06-11 07:07:02

タイトル: Responseオブジェクトの中身の確認
SEOタイトル: PythonのResponseオブジェクトの中身の確認

この記事の要点
  • Laravel の Response オブジェクトの中身を確認する方法
  • $response->getContent(): レスポンスボディの文字列
  • $response->getStatusCode(): HTTP ステータスコード
  • $response->headers->all(): ヘッダ一覧
  • テストでは $response->dump() / $response->dd() で詳細表示

 

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']);

関連記事