Кастомізація відповіді ресурсів у API на базі Laravel

Перекладено ШІ 2 Laravel News 02 червня, 2026

Вам цікаво, як оптимізувати API-відповіді у Laravel? Метод withResponse дозволяє налаштовувати не лише дані, а й заголовки та коди статусу, щоб ваш API мав професійний вигляд і міг ефективно передавати метадані. Читайте далі, щоб дізнатися, як це реалізувати

Метод withResponse у Laravel дозволяє розробникам налаштовувати API-відповіді, змінюючи HTTP-об'єкт відповіді перед його відправленням клієнту. Це вміння виходить за межі простих перетворень даних і дає можливість налаштувати заголовки, коди статусу та інші атрибути відповіді.

Цей підхід особливо корисний при створенні професійних API, які повинні передавати метадані, інформацію про версії або спеціалізовані заголовки клієнтам, що використовують ваші сервіси.

class UserResource extends JsonResource
{
    public function withResponse($request, $response)
    {
        $response->header('X-Resource-Type', 'User');
    }
}

Ось приклад реалізації комплексної API-відповіді:

<?php
 
namespace App\Http\Resources;
 
use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Http\Request;
 
class DocumentResource extends JsonResource
{
    public function toArray(Request $request): array
    {
        return [
            'id' => $this->id,
            'title' => $this->title,
            'content' => $this->when(
                $request->user()->canViewContent($this->resource),
                $this->content
            ),
            'created_at' => $this->created_at,
            'updated_at' => $this->updated_at
        ];
    }
 
    public function withResponse(Request $request, $response)
    {
        // Встановлюємо заголовки специфічні для ресурсу
        $response->header('X-Document-ID', $this->id);
 
        // Додаємо інформацію про кешування для публічних документів
        if ($this->is_public) {
            $response->header('Cache-Control', 'public, max-age=3600');
            $response->header('ETag', md5($this->updated_at));
        }
 
        // Встановлюємо відповідні коди статусу
        if ($this->wasRecentlyCreated) {
            $response->setStatusCode(201);
        }
 
        // Додаємо попередження про застарілі поля за запитом
        if ($request->has('include_legacy')) {
            $response->header('X-Deprecated-Fields', 'legacy_format,old_structure');
            $response->header('X-Deprecation-Date', '2024-07-01');
        }
    }
}

Метод withResponse трансформує ваші API-ресурси з простих контейнерів даних у повністю налаштовані HTTP-відповіді, які передають важливі метадані разом з основним вмістом

Популярні

Інше, що варто прочитати

12 Оновлено 01 червня, 2026

Удосконалюйте свої проєкти Laravel за допомогою справжнього штучного інтелекту для кодування з Laravel Boost!

Готові підняти свій робочий процес у Laravel на новий рівень? У цій статті я розгляну Laravel Boost, інноваційний AI-допомічник для програмування, який зробить вашу розробку швидшою та продуктивнішою

17 Оновлено 01 червня, 2026

Налаштування Xdebug з Docker та PHP 8.4 всього за одну хвилину

Встановлення Xdebug може бути складним завданням, але в цій статті ми розкриємо, як швидко та просто налаштувати його за допомогою Docker на прикладі Laravel. Дочитайте до кінця, щоб дізнатися, як за кілька хвилин зробити Xdebug вашим надійним помічником у розробці

83 Оновлено 01 червня, 2026

Все, що потрібно знати про Laravel 13

Laravel 13 вийде в березні 2026 року й вимагатиме мінімум PHP 8.3. Хочете дізнатися, як PHP‑атрибути для моделей, нові налаштування черг і метод Cache::touch() вплинуть на вашу розробку?