У меня есть настройка API Laravel RESTful, которая должна возвращать данные в формате JSON в приложение на одном из моих поддоменов (и, следовательно, не в самом приложении Laravel).
В REST я возвращаюсь, как:
return \Response::json(array(
"status" => "success",
"type" => "client",
"message" => "Nothing to see here!"
));
В моем классе в субдоменном приложении я просто пытаюсь вернуть этот ответ в представление, распечатать вывод для тестирования.
Надеюсь, что я просто верну JSON, но когда я сделаю простой:
echo $resp;
Я ничего не получаю
Если я сделаю:
print_r( $resp );
или
json_decode( $resp );
Я получил:
HTTP/1.1 200 OK
Server: nginx/1.6.2
Content-Type: application/json
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.4.35
Access-Control-Allow-Origin: *
Cache-Control: no-cache
Date: Sat, 06 Dec 2014 04:18:15 GMT
Set-Cookie: laravel_session=eyJpdiI6Ik5DdDFGK2tJQ3ZCVkJPQnRtZHRaU2c9PSIsInZhbHVlIjoiT2tXSTJWYzRKUXZncG9NOFZBYkhOUTZRaUg1c3NmUXlHTjF5bzYyaTZRYUY4S3VBMEdwdjdwdXNUNHkwblppV1I5YUFsY2dodGNyRHh5SmZYeGFjcWc9PSIsIm1hYyI6Ijc0Mzg3MGNlNTBiYTEyNTE3MzNhZDVjNjUzNzMwNzk0ZTMwN2MwYmFiNDIyMGE0N2MyNTQxMDNlMDdiOGFmOTQifQ%3D%3D; expires=Sat, 06-Dec-2014 06:18:15 GMT; path=/; httponly
{"status":"success","type":"client","message":"Nothing to see here!"}
Я не хочу, чтобы все эти заголовки были в моем ответе подобным образом. Или я получаю и пытаюсь разобрать его неправильно. Что я здесь делаю неправильно?
Мое возвращение таково:
return Response::json(array($data));
Просто сохраните массив переменной и вызовите эту переменную на ответ.
Хорошо, это была глупая ошибка не с REST API, а с вызовом cURL API.
Если это когда-нибудь случится с вами, просто проверьте и убедитесь, что у вас нет:
curl_setopt($ch, CURLOPT_HEADER, 1);
Это приведет к выпуску заголовков с ответом и испортит ваш день. Надеюсь, это поможет другим.