API Resource mentransformasi model Eloquent menjadi format JSON yang rapi.
Membuat resource:
php artisan make:resource UserResource
class UserResource extends JsonResource
{
public function toArray(Request $request): array
{
return [
"id" => $this->id,
"name" => $this->name,
"email" => $this->email,
"avatar_url" => $this->photo_url,
"member_since" => $this->created_at->format("Y-m-d"),
"posts_count" => $this->whenCounted("posts"),
];
}
}
Menggunakan resource:
// Single resource
return new UserResource($user);
// { "data": { "id": 1, "name": "Budi", ... } }
// Collection
return UserResource::collection($users);
// { "data": [{ "id": 1, ... }, { "id": 2, ... }] }
Keuntungan:
- Kontrol persis field apa yang dikirim ke client
- Sembunyikan field sensitif (password, token)
- Transform format (date, URL)
- Konsisten response structure