0Pricing
PHP Academy · درس

موارد API واستجابات JSON

شكّلوا مخرجات JSON باستخدام موارد API في Eloquent وResourceCollections

موارد API واستجابات JSON درس مجاني في PHP Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في PHP Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة PHP Academy 4 دروس في المجموع.

ما هي موارد API؟

تحوّل Eloquent API Resources النماذج والمجموعات إلى مصفوفات جاهزة بصيغة JSON، مما يمنحك تحكمًا كاملًا في بنية استجابات API.

إنشاء مورد

أنشئ فئة مورد باستخدام Artisan.

$ php artisan make:resource UserResource
# For collections:
$ php artisan make:resource UserCollection

مورد أساسي

تجاوز toArray() لتعريف بنية JSON.

<?php
namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class UserResource extends JsonResource
{
    public function toArray($request): array
    {
        return [
            "id"         => $this->id,
            "name"       => $this->name,
            "email"      => $this->email,
            "created_at" => $this->created_at->toISOString(),
        ];
    }
}

إعادة مورد

أعد المورد من المتحكم، وسيغلّف النموذج تلقائيًا داخل مفتاح data.

<?php
public function show(User $user): UserResource
{
    return new UserResource($user);
}
// Response: {"data": {"id": 1, "name": "Alice", ...}}

مجموعات الموارد

غلّف مجموعة من النماذج باستخدام ::collection().

<?php
public function index(): AnonymousResourceCollection
{
    return UserResource::collection(User::paginate(15));
}

الحقول الشرطية

ضمّن حقلًا فقط عند تحقق شرط باستخدام when().

<?php
return [
    "id"    => $this->id,
    "email" => $this->when($request->user()?->isAdmin(), $this->email),
    "token" => $this->whenLoaded("tokens", $this->tokens->first()->plainTextToken),
];

whenLoaded()

ضمّن علاقة بشكل مشروط فقط إذا كانت قد حُمّلت مسبقًا، لتجنب استعلامات N+1 في استجابات الموارد.

<?php
return [
    "id"      => $this->id,
    "posts"   => PostResource::collection($this->whenLoaded("posts")),
    "profile" => new ProfileResource($this->whenLoaded("profile")),
];

الموارد المتداخلة

ضمّن الموارد داخل موارد أخرى للحصول على بُنى استجابة غنية ومُنمّطة.

<?php
return [
    "id"     => $this->id,
    "author" => new UserResource($this->author),
    "tags"   => TagResource::collection($this->tags),
];

بيانات وصفية إضافية

أضف بيانات وصفية إلى الاستجابة من خلال تجاوز with().

<?php
public function with($request): array
{
    return [
        "meta" => ["version" => "1.0"],
    ];
}

التغليف

تُغلّف الموارد داخل مفتاح data افتراضيًا. عطّل التغليف على مستوى التطبيق باستخدام JsonResource::withoutWrapping().

<?php
// In AppServiceProvider::boot():
JsonResource::withoutWrapping();

التقسيم إلى صفحات في الموارد

تُضمّن بيانات التقسيم إلى صفحات تلقائيًا عند تمرير مُقسّم صفحات إلى مجموعة موارد.

<?php
return UserResource::collection(User::paginate(15));
// Response includes: data[], links{}, meta{}

اختبار الموارد

تحقق من بنية المورد في الاختبارات باستخدام assertJson() أو assertJsonStructure().

<?php
$response->assertJsonStructure([
    "data" => ["id", "name", "email"]
]);

الملخص

تتحكم موارد API في بنية مخرجات JSON. استخدم when() وwhenLoaded() للحقول الشرطية. ضمّن الموارد للعلاقات. استخدم ::collection() للنماذج المتعددة.

تحقق سريع

أي أسلوب يضمّن علاقة بشكل مشروط فقط إذا كانت قد حُمّلت مسبقًا؟

الأسئلة الشائعة

هل درس «موارد API واستجابات JSON» مجاني؟

نعم — نص درس «موارد API واستجابات JSON» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة PHP Academy، انتقل إلى CoddyKit PRO. تتضمن دورة PHP Academy 4 دروس في المجموع.

ماذا ستتعلم في «موارد API واستجابات JSON»؟

شكّلوا مخرجات JSON باستخدام موارد API في Eloquent وResourceCollections تتمرن على PHP Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ PHP Academy؟

لا تُشترط خبرة سابقة. PHP Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «موارد API واستجابات JSON»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس PHP Academy هذا؟

نعم. كل درس في PHP Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. مسارات API ووحدات تحكم الموارد
  2. موارد API واستجابات JSON
  3. المصادقة باستخدام Laravel Sanctum
  4. تحديد معدل الطلبات وإصدار API
← العودة إلى PHP Academy