 (43).png)
API geliştirirken verilerinizi nasıl yönetiyorsunuz? Laravel API Resources ile profesyonel veri dönüşümü yapmanın inceliklerini keşfedelim!
API Resources, Laravel'de veri dönüşüm katmanı olarak çalışır:
php artisan make:resource UserResource php artisan make:resource UserCollection
UserResource.php:
class UserResource extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->full_name,
'email' => $this->when($request->user()->isAdmin(), $this->email),
'created_at' => $this->created_at->format('d.m.Y'),
'links' => [
'self' => route('users.show', $this->id),
'profile' => $this->profile_url
]
];
}
}
Controller'da Kullanım:
return new UserResource($user); // Veya koleksiyon için return UserResource::collection($users);
'email' => $this->when($request->user()->isAdmin(), $this->email)
return [
'posts' => PostResource::collection($this->whenLoaded('posts'))
];
$this->mergeWhen($request->user()->isAdmin(), [
'last_login_ip' => $this->last_login_ip,
'login_count' => $this->login_count
]);
Özel Collection Oluşturma:
class UserCollection extends ResourceCollection
{
public function toArray($request)
{
return [
'data' => $this->collection,
'meta' => [
'total' => $this->total(),
'per_page' => $this->perPage(),
'current_page' => $this->currentPage()
]
];
}
}
Controller'da Kullanım:
return new UserCollection(User::paginate(20));
'created_at' => $this->created_at->isoFormat('LLLL')
'avatar' => $this->avatar ? Storage::url($this->avatar) : null
'is_active' => $this->deleted_at === null
class ArticleResource extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'title' => $this->title,
'slug' => $this->slug,
'content' => $this->when($request->is('api/articles/*'), $this->content),
'author' => new UserResource($this->whenLoaded('author')),
'tags' => TagResource::collection($this->whenLoaded('tags')),
'stats' => $this->when($request->with_stats, [
'views' => $this->views,
'likes' => $this->likes_count
]),
'published_at' => $this->published_at->toIso8601String(),
'links' => [
'self' => route('articles.show', $this->slug),
'comments' => route('api.articles.comments.index', $this->id)
]
];
}
}
Laravel API Resources ile:
API'larınızda hangi veri dönüşüm yöntemlerini kullanıyorsunuz? Yorumlarda paylaşın! 💬
Bir sonraki yazımız: 🚀 [Laravel'de Database Indexing: Performans Optimizasyonu] - Veritabanınızı turbo moduna geçirin!
#Laravel #API #RESTful #WebDevelopment #Backend 🚀