ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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アノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?