Ресурсы API Laravel предоставляют мощный способ преобразования ваших моделей Eloquent в ответы JSON для конечных точек API. С помощью функции API-ресурсов Laravel вы можете форматировать и структурировать свои ответы API, делая их согласованными, настраиваемыми и простыми в работе. В этой статье мы рассмотрим различные методы, доступные в ресурсах API Laravel, а также примеры кода, демонстрирующие их использование.
- Определение ресурсов API:
Чтобы начать использовать ресурсы API в Laravel, вам необходимо определить класс ресурсов для каждой модели. Класс ресурсов расширяет классIlluminate\Http\Resources\Json\JsonResource
. Вот пример:
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class UserResource extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
];
}
}
-
Базовое преобразование.
МетодtoArray()
в классе ресурсов определяет базовое преобразование модели в массив. Вы можете настроить структуру массива и при необходимости включить дополнительные данные. -
Преобразование коллекции.
Если вы хотите вернуть коллекцию ресурсов, вы можете использовать методcollection()
в своем контроллере. Вот пример:
use App\Http\Resources\UserResource;
public function index()
{
$users = User::all();
return UserResource::collection($users);
}
- Условное включение полей.
Вы можете условно включать или исключать поля в выводе ресурса с помощью методаwhen()
. Вот пример:
return [
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
'phone' => $this->when($this->isAdmin(), $this->phone),
];
В приведенном выше примере поле «телефон» будет включено только в том случае, если метод isAdmin()
вернет true.
- Связи ресурсов.
Ресурсы API Laravel позволяют включать отношения в выходные данные вашего ресурса. Вы можете использовать методwith()
для включения связанных ресурсов. Вот пример:
return [
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
'posts' => PostResource::collection($this->whenLoaded('posts')),
];
В приведенном выше примере связь «публикации» будет включена, если она загружена.
- Дополнительные методы ресурсов.
Ресурсы API Laravel предоставляют дополнительные методы для дальнейшей настройки вывода ресурсов. Некоторые известные методы включаютmerge()
,additional()
,map()
иmapInto()
. Для получения более подробной информации вы можете изучить эти методы в документации Laravel.
Не забудьте обратиться к документации Laravel, чтобы получить полное представление о ресурсах API Laravel и их возможностях.