ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|---|
|
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=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?