Класс JsonResponse
Класс JsonResponse используется для возврата JSON-данных из контроллеров
Laravel. Он автоматически устанавливает правильные заголовки и кодирует данные
в JSON. Первым параметром передаются данные для преобразования, вторым -
код состояния HTTP, третьим - массив дополнительных заголовков. По умолчанию
возвращается код состояния 200 и заголовок 'Content-Type: application/json'.
Синтаксис
<?php
new JsonResponse($data, $status, $headers);
?>
Альтернативный способ создания через функцию-помощник:
<?php
response()->json($data, $status, $headers);
?>
Пример
Давайте вернём простой JSON-ответ с массивом данных:
<?php
namespace AppHttpControllers;
use IlluminateHttpJsonResponse;
use AppModelsUser;
class UserController extends Controller
{
public function index(): JsonResponse
{
$users = User::all();
return new JsonResponse($users);
}
}
?>
Результат выполнения кода:
[
{"id":1,"name":"John","email":"john@example.com"},
{"id":2,"name":"Jane","email":"jane@example.com"}
]
Пример
Давайте вернём JSON-ответ с кодом состояния 201 (Created) и дополнительными заголовками:
<?php
namespace AppHttpControllers;
use IlluminateHttpJsonResponse;
use AppModelsArticle;
class ArticleController extends Controller
{
public function store(): JsonResponse
{
$article = Article::create([
'title' => 'New article',
'text' => 'Article content'
]);
$headers = [
'X-Custom-Header' => 'Custom value',
'X-Created-At' => now()->toISOString()
];
return new JsonResponse($article, 201, $headers);
}
}
?>
Результат выполнения кода:
{"id":1,"title":"New article","text":"Article content","created_at":"2026-09-08 10:00:00","updated_at":"2026-09-08 10:00:00"}
Пример
Давайте вернём JSON-ответ с помощью функции-помощника для создания API-ответа:
<?php
namespace AppHttpControllersApi;
use AppHttpControllersController;
use AppModelsProduct;
class ProductController extends Controller
{
public function show(int $id)
{
$product = Product::find($id);
if (!$product) {
return response()->json([
'error' => 'Product not found',
'code' => 404
], 404);
}
return response()->json([
'data' => $product,
'success' => true
], 200);
}
}
?>
Результат выполнения кода для существующего продукта:
{"data":{"id":1,"name":"Product 1","price":99.99},"success":true}
Результат выполнения кода для несуществующего продукта:
{"error":"Product not found","code":404}
Смотрите также
-
класс
Response,
который является базовым классом для всех HTTP-ответов -
метод
json,
который создаёт JSON-ответ через фасад Response -
класс
RedirectResponse,
который используется для редиректов -
функция
response,
которая является глобальной функцией-помощником для создания ответов