В Laravel, чтобы отправить клиенту данные в формате JSON можно любым из перечисленных способов:
Из экшна (метода) контроллера вернуть результат запроса с методом toJson(<параметры кодирования>)
Этот метод можно вызвать как для коллекции объектов модели:
public function index(){ return User::all()->toJson(JSON_UNESCAPED_UNICODE); }
Так и для отдельного объекта модели:
public function show(User $user){ return $user->toJson(JSON_UNESCAPED_UNICODE); }
При вызове метода toJson() можно указать параметры кодирования. Так, использованная в приведенных примерах опция кодированая JSON_UNESCAPED_UNICODE указывает не преобазовывать многобайтные символы (например, символы кириллицы) в их коды.
Вернуть из экшна контроллера результат вызова метода toArray()
. Он полностью аналогичен методу toJson()
, но без параметров кодирования
// для отдельного объекта модели return $user->toArray(); // для коллекции объектов модели return User::all()->toArray();
Если не требуется извлекать связные записи, то можно использовать метод attributesToArray()
return $user->attributesToArray();
Вернуть из экшна контроллера результат приведения объекта модели или коллекции к строковому типу
return (string) User::all();
Вернуть из эшкна контроллера объект модели или коллекции:
public function show(User $user){ return $user }
Если необходимо отправить клиенту закодированные в формат JSON произвольные данные, то можно воспользоваться инструментом json()
класса ResponseFactory
:
public function show(User $user){ return response()->json($user); }
Наконец, для реализации более сложных ответов, можно воспользоваться ресурсными классами. Далее сосредоточимся на ответах с помощью ресурсных классов.
Практика