Open1

Laravelでweb.phpを使い、dd()でjson形式を見る方法

FutoshiFutoshi

Laravelのコントローラーで受け取った。Guzzle HTTPクライアントのレスポンスを dd() でダンプする場合、レスポンスボディはストリームとして返されるため、 それを文字列や配列に変換する必要があります。

これは getBody()->getContents() メソッドを使って行いますが、ストリームは一度読み出すとその位置が最後に移動するので、 再度読み出す前に rewind() を使って位置をリセットする必要があります。

use GuzzleHttp\Client;

$client = new Client(); //Guzzle HTTPクライアント
$ItemUrl = 'http://localhost:8000/api/item';

$response = $client->request('POST', $ItemUrl, [
        'headers' => [
            'Authorization' => 'Bearer ' . $accessToken,
            'Accept' => 'application/json',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'user_id' => $userId,
        ],
    ]);

    // ストリームをリセット
    $response->getBody()->rewind();
    // ストリームの内容を取得してJSONとしてデコード
    $decodedData = json_decode($response->getBody()->getContents(), true);

    // デコードされたデータをダンプ
    dd($decodedData);

上記のようにストリームをリセットして、ストリームの内容を取得してJSONとしてデコードすれば、
dd()の中身がjson形式のデータが表示されます。