CodeStan Insights تطوير

كيف تبني REST API باستخدام Laravel: دليل تعليمي شامل

في CodeStan، نؤمن ببناء أسس رقمية قوية وقابلة للتوسع. وفي عالمنا المترابط اليوم، هذا يعني غالباً واجهات برمجية التطبيقات (APIs). من تطبيقات الجوال في الرياض إلى تطبيقات الصفحة الواحدة.

2 min read
كيف تبني REST API باستخدام Laravel: دليل تعليمي شامل
Key Idea

تعلّم كيف تبني REST API باستخدام Laravel من خلال دليل عملي يغطي إعداد المشروع، النموذج، المتحكم، المسارات، الاختبار، وأفضل الممارسات.

في CodeStan، نؤمن ببناء أسس رقمية قوية وقابلة للتوسع. وفي عالمنا المترابط اليوم، هذا يعني غالباً واجهات برمجية التطبيقات (APIs). من تطبيقات الجوال في الرياض إلى تطبيقات الصفحة الواحدة في دبي، APIs هي الأوردة التي تُنقل البيانات بين الأنظمة.

هذا الدليل يعلمك كيفية بناء REST API احترافي باستخدام Laravel. ليس نظرية مجردة. أمثلة واقعية يمكنك متابعتها وبناء شيء حقيقي.

ما سنبنيه

API لإدارة المنتجات. يتضمن:

  • إنشاء منتج (POST /api/products)
  • قراءة المنتجات (GET /api/products)
  • تحديث منتج (PUT /api/products/{id})
  • حذف منتج (DELETE /api/products/{id})
  • البحث والتصفية
  • التوثيق

المتطلبات الأساسية

قبل البدء:

  • PHP 8.2+ مثبت على جهازك
  • Composer
  • MySQL أو SQLite
  • معرفة أساسية بـ Laravel

الخطوة الأولى: إعداد المشروع

أنشئ مشروع Laravel جديد:

laravel new product-api
cd product-api

أنشئ قاعدة البيانات وحدث ملف .env:

DB_DATABASE=product_api
DB_USERNAME=root
DB_PASSWORD=your_password

الخطوة الثانية: إنشاء النموذج والهجرة

أنشئ نموذج Product مع الهجرة:

php artisan make:model Product -m

في ملف الهجرة:

public function up()
{
    Schema::create('products', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->text('description')->nullable();
        $table->decimal('price', 10, 2);
        $table->integer('stock')->default(0);
        $table->timestamps();
    });
}

شغل الهجرة:

php artisan migrate

الخطوة الثالثة: إنشاء المتحكم

أنشئ متحكم API:

php artisan make:controller Api/ProductController --api

في ProductController:

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Models\Product;
use Illuminate\Http\Request;

class ProductController extends Controller
{
    public function index()
    {
        return Product::all();
    }

    public function store(Request $request)
    {
        $validated = $request->validate([
            'name' => 'required|string|max:255',
            'description' => 'nullable|string',
            'price' => 'required|numeric|min:0',
            'stock' => 'required|integer|min:0',
        ]);

        return Product::create($validated);
    }

    public function show(Product $product)
    {
        return $product;
    }

    public function update(Request $request, Product $product)
    {
        $validated = $request->validate([
            'name' => 'sometimes|string|max:255',
            'description' => 'nullable|string',
            'price' => 'sometimes|numeric|min:0',
            'stock' => 'sometimes|integer|min:0',
        ]);

        $product->update($validated);
        return $product;
    }

    public function destroy(Product $product)
    {
        $product->delete();
        return response()->noContent();
    }
}

الخطوة الرابعة: إعداد المسارات

في routes/api.php:

use App\Http\Controllers\Api\ProductController;

Route::apiResource('products', ProductController::class);

الخطوة الخامسة: الاختبار

شغل الخادم:

php artisan serve

اختبر API باستخدام Postman أو curl:

curl -X POST http://localhost:8000/api/products \
  -H "Content-Type: application/json" \
  -d '{"name":"iPhone 16","price":3999,"stock":50}'

الأخطاء الشائعة وكيفية تجنبها

عدم التحقق من المدخلات: دائماً استخدم التحقق. APIs مفتوحة للعالم. لا تثق بأي مدخل.

غياب التوثيق: استخدم Scribe أو Swagger لتوليد توثيق تلقائي. APIs بدون توثيق صعبة الصيانة.

إرجاع بيانات حساسة: لا تُرجع كلمات مرور أو مفاتيح API في الردود.

نصيحة احترافية

استخدم Postman Collection لتوثيق واختبار API. شاركها مع فريقك. التوثيق الحي أفضل من المستندات الثابتة.

الخطوات التالية

بعد بناء API الأساسي:

  • أضف المصادقة باستخدام Sanctum
  • أضف التصفية والبحث والترتيب
  • أضف التخزين المؤقت للاستعلامات المتكررة
  • أضف Rate Limiting لحماية API
  • أضف الاختبارات الآلية

API جيد ليس الذي يعمل فقط. هو الذي يعمل، يتوسع، ويُفهم.

— فريق CodeStan

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

Common Questions

ما هو REST API؟

REST API هو واجهة برمجية تُتيح للتطبيقات التواصل عبر بروتوكول HTTP بطريقة منظمة ومبنية على موارد. يُستخدم في تطبيقات الجوال والويب لنقل البيانات بين الأنظمة بسهولة وكفاءة.

ما هي Laravel؟

Laravel هو إطار عمل PHP حديث يُسهّل تطوير تطبيقات الويب والـ APIs بفضل تركيبته النظيفة، أدواته الجاهزة، ونظامه القوي للمصادقة والتوثيق.

ما هي خطوات بناء REST API باستخدام Laravel؟

تبدأ بإعداد مشروع Laravel جديد وإنشاء نموذج Product مع الهجرة، ثم تبني المتحكم API Resource، تُنشئ المسارات في routes/api.php، وتختبر النقاط الطرفية باستخدام Postman أو curl.

ما هي الأخطاء الشائعة عند بناء API؟

من أبرزها عدم التحقق من المدخلات، وغياب التوثيق، وإرجاع بيانات حساسة في الردود. تجنّبها يتطلب استخدام التحقق، وأدوات مثل Scribe أو Swagger، وتصفية البيانات قبل الإرجاع.

كيف أحمي REST API في Laravel؟

استخدم Laravel Sanctum للمصادقة، وفّر Rate Limiting لمنع الاستهلاك المفرط، وطبّق صلاحيات دقيقة للمستخدمين. كذلك أضف التخزين المؤقت للاستعلامات المتكررة وتحقق دائمًا من المدخلات.

هل أحتاج معرفة مسبقة بلارافيل لبناء API؟

نعم، معرفة أساسية بـ Laravel وPHP وقواعد البيانات تُساعدك على متابعة الخطوات وفهم المنطق. إذا لم تكن لديك خلفية تقنية، فإن التعاون مع وكالة متخصصة يُسرّع التنفيذ ويضمن جودة أعلى.

متى أحتاج وكالة متخصصة مثل CodeStan لبناء API؟

عندما يكون المشروع معقدًا أو يتطلب أمانًا عاليًا وتوسعًا مستقبليًا، أو عندما يكون لديك فريق محدود تقنيًا. وكالة متخصصة تقدّم بنية تحتية سليمة وتوثيقًا احترافيًا ودعمًا مستمرًا.

كم يستغرق بناء REST API احترافي؟

يعتمد على حجم المشروع وعدد النقاط الطرفية والمتطلبات الأمنية. API أساسي قد يكتمل في أيام، بينما نظام متكامل مع مصادقة وتقارير واختبارات قد يستغرق أسابيع.

Share LinkedIn X

Have a Challenge Like This? Let's Talk.

Tell us where your business needs to go — we will help you build the system to get there.