Метод 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-відповіді, які передають важливі метадані разом з основним вмістом
Встановлення Xdebug може бути складним завданням, але в цій статті ми розкриємо, як швидко та просто налаштувати його за допомогою Docker на прикладі Laravel. Дочитайте до кінця, щоб дізнатися, як за кілька хвилин зробити Xdebug вашим надійним помічником у розробці
У сучасній веб-розробці аутентифікація є ключовою для захисту додатків і даних користувачів. Дізнайтеся, як модуль nuxt-sanctum-authentication спростить інтеграцію між Nuxt 3 та Laravel Sanctum, забезпечуючи надійний і зручний спосіб реалізації аутентифікації для вашого проєкту
Нова версія Livewire 4, представленої Келебом Порзіо на Laracon US 2025, обіцяє значні покращення у швидкості та організації компонентів. Які з інноваційних функцій підкорять ваше серце? Читайте далі, щоб дізнатися більше про те, як Livewire 4 полегшить вашу роботу