JSON-ответ в Laravel
Иногда клиенту нужен не HTML, а данные - например, для AJAX или API. Тогда удобно отдать ответ в формате JSON.
Для этого у функции response есть
метод json. Ему передают массив
(или другой набор данных), а Laravel сам
превратит его в JSON-строку и выставит
заголовок Content-Type: application/json:
<?php
namespace App\Http\Controllers;
class PostController extends Controller
{
public function index()
{
return response()->json([
'title' => 'title',
'ok' => true,
]);
}
}
?>
Вторым параметром можно указать
HTTP-статус. По умолчанию будет
200:
<?php
namespace App\Http\Controllers;
class PostController extends Controller
{
public function store()
{
return response()->json([
'message' => 'created',
], 201);
}
}
?>
Часто в JSON отдают данные из базы - например, коллекцию постов. Eloquent модели и коллекции Laravel умеет преобразовать в JSON сам:
<?php
namespace App\Http\Controllers;
use App\Models\Post;
class PostController extends Controller
{
public function index()
{
$posts = Post::all();
return response()->json($posts);
}
}
?>
Сделайте маршрут, который отдаёт простой массив в JSON.
Отдайте JSON со статусом 201.
Получите работников из БД и отдайте их в JSON.