За замовчуванням, API ресурси Laravel обгортають відповіді в ключ 'data'. Це зручно в багатьох випадках, але іноді потрібна простіша структура відповіді. Ви можете вимкнути обгортання ресурсів наступним чином:
<?php
namespace App\Providers;
use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function boot(): void
{
JsonResource::withoutWrapping();
}
}
Ось приклад роботи функції withoutWrapping
:
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class ArticleResource extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'title' => $this->title,
'content' => $this->content,
'author' => new AuthorResource($this->whenLoaded('author')),
'metadata' => [
'views' => $this->views_count,
'likes' => $this->likes_count,
'published_at' => $this->published_at
]
];
}
}
Приклад відповіді з вимкненим обгортанням:
[
{
"id": 1,
"title": "Laravel Tips",
"content": "Article content here",
"author": {
"id": 1,
"name": "John Doe",
"email": "john@example.com"
},
"metadata": {
"views": 150,
"likes": 42,
"published_at": "2024-03-15T10:00:00Z"
}
}
]
Ця реалізація забезпечує чистішу структуру API, дозволяючи налаштовувати формати відповідей відповідно до потреб вашого застосунку.
Обгортання ресурсів можна вимкнути глобально, зберігаючи водночас більше контролю над структурою відповідей вашого API. Це призводить до інтуїтивніших і зручніших у споживанні точок доступу.