در لاراول، وقتی با API کار میکنی، بهتره دادههایی که به کلاینت (مثل Vue.js یا اپ موبایل) میفرستی رو ساختارمند و مرتب کنی. اینجاست که چیزی مثل Transformers یا در لاراول، API Resource به کمکت میاد.
✅ Transformers چیه؟
Transformer یا Resource، دادههای خام مدلها (مثل User یا Post) رو میگیره و به شکل قابل استفاده و قابل خواندن برای API تبدیل میکنه.
✅ سادهترین روش: استفاده از Laravel API Resources
لاراول یه سیستم داخلی برای ترنسفورم کردن دادهها داره به اسم Resource Classes.
📦 ساختن Resource
فایلش توی مسیر app/Http/Resources/UserResource.php ساخته میشه.
🧩 نمونه کد UserResource
✅ استفاده در کنترلر
یا برای لیست:
✅ سفارشیسازی پاسخ JSON
میتونی روابط و ساختارهای پیچیدهتر رو هم اضافه کنی:
✅ ارسال متا دیتا همراه JSON
✅ اگر بخوای دستی Transformer بسازی (الگوی کلاسیک)
تو بعضی پروژهها یا لایههای جدا از لاراول، شاید بخوای transformer خودت رو بسازی:
در کنترلر:
🟢 مقایسه Resource vs Transformer دستی
| ویژگی | Resource (Laravel) | Transformer دستی |
|---|---|---|
| رسمی و استاندارد | ✅ | ❌ |
| اتوماتیک و تمیز | ✅ | 🔧 |
| کنترل کامل روی داده | ✅ | ✅ |
| متا دیتا و روابط | ✅ | نیاز به پیادهسازی دستی |
| استفاده در JsonResponse | عالی | نیاز به json_encode() |
✨ جمعبندی
🔧 Resource / Transformer ابزاریه برای:
-
مرتبسازی دادهها برای API
-
پنهان کردن فیلدهای حساس (مثل
password) -
سفارشیسازی خروجی
-
سادهتر کردن پاسخها برای فرانتاند
اگه خواستی برات یه مجموعه Resource برای مدلهایی مثل User, Post, و Comment طراحی کنم، یا یه پاسخ API حرفهای با meta و pagination بسازم، فقط بگو 📦✅