إنشاء API Endpoints في Laravel

Amine
30/08/2024

المقدمة

واجهة برمجة التطبيقات (API) هي طريقة للتواصل بين الأنظمة المختلفة، وتتيح لتطبيقك التفاعل مع تطبيقات أخرى أو تقديم خدمات خارجية. يوفر Laravel أدوات قوية وسهلة الاستخدام لإنشاء APIs متكاملة وحديثة باستخدام RESTful. في هذا الدليل، سنتعرف على كيفية إنشاء API بسيط في Laravel مع نقاط نهاية متعددة لإدارة الموارد مثل المنتجات.

الخطوة 1: إعداد مشروع Laravel جديد

إذا لم يكن لديك مشروع Laravel موجود، يمكنك إنشاء مشروع جديد باستخدام Composer. افتح سطر الأوامر واستخدم الأمر التالي:

composer create-project --prefer-dist laravel/laravel laravel-api

بعد تثبيت Laravel، انتقل إلى مجلد المشروع:

cd laravel-api

الخطوة 2: إعداد قاعدة البيانات وإنشاء نموذج وترحيل (Migration)

قبل إنشاء نقاط النهاية، نحتاج إلى إعداد قاعدة البيانات وإنشاء نموذج Product مع ترحيل (Migration) لإنشاء جدول products. افتح ملف .env في جذر مشروعك وقم بتحديث إعدادات قاعدة البيانات لتتناسب مع بيئتك المحلية:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database_name
DB_USERNAME=your_database_username
DB_PASSWORD=your_database_password

بعد إعداد قاعدة البيانات، استخدم الأمر التالي لإنشاء نموذج Product وترحيل:

php artisan make:model Product -m

سيقوم هذا الأمر بإنشاء نموذج Product وملف ترحيل (Migration) في مجلد database/migrations. افتح ملف الترحيل وقم بتعريف هيكل الجدول كما يلي:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateProductsTable extends Migration
{
    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->text('description');
            $table->decimal('price', 8, 2);
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('products');
    }
}

قم بتشغيل الترحيلات لإنشاء الجدول في قاعدة البيانات:

php artisan migrate

الخطوة 3: إنشاء المتحكم (Controller) الخاص بالمنتجات

نحتاج الآن إلى إنشاء متحكم (Controller) للتعامل مع عمليات CRUD (إنشاء، قراءة، تحديث، حذف) الخاصة بالمنتجات. استخدم الأمر التالي لإنشاء متحكم جديد باستخدام النموذجية (Resource):

php artisan make:controller ProductController --resource

سيقوم هذا الأمر بإنشاء ملف ProductController.php في مجلد app/Http/Controllers. افتح الملف وأضف الوظائف التالية للتعامل مع عمليات CRUD:

<?php

namespace App\Http\Controllers;

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

class ProductController extends Controller
{
    // جلب جميع المنتجات
    public function index()
    {
        $products = Product::all();
        return response()->json($products);
    }

    // إنشاء منتج جديد
    public function store(Request $request)
    {
        $request->validate([
            'name' => 'required|string|max:255',
            'description' => 'required|string',
            'price' => 'required|numeric',
        ]);

        $product = Product::create($request->all());

        return response()->json($product, 201);
    }

    // جلب منتج معين
    public function show(Product $product)
    {
        return response()->json($product);
    }

    // تحديث منتج موجود
    public function update(Request $request, Product $product)
    {
        $request->validate([
            'name' => 'sometimes|required|string|max:255',
            'description' => 'sometimes|required|string',
            'price' => 'sometimes|required|numeric',
        ]);

        $product->update($request->all());

        return response()->json($product);
    }

    // حذف منتج
    public function destroy(Product $product)
    {
        $product->delete();

        return response()->json(null, 204);
    }
}

هذا المتحكم يتضمن جميع الوظائف اللازمة للتعامل مع الموارد الخاصة بالمنتجات: index لجلب جميع المنتجات، store لإنشاء منتج جديد، show لجلب منتج معين، update لتحديث منتج، وdestroy لحذف منتج.

الخطوة 4: إعداد مسارات API في Laravel

الآن، نحتاج إلى إعداد مسارات (Routes) لنقاط نهاية API الخاصة بالمنتجات. افتح ملف routes/api.php وأضف المسارات التالية:

use App\Http\Controllers\ProductController;
use Illuminate\Support\Facades\Route;

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

يستخدم هذا الكود التوجيه apiResource لتوليد جميع مسارات RESTful الأساسية لنقاط نهاية API الخاصة بالمنتجات.

الخطوة 5: اختبار نقاط نهاية API

لاختبار نقاط نهاية API، يمكنك استخدام أدوات مثل Postman أو Insomnia. قم بتشغيل خادم التطوير المحلي باستخدام الأمر التالي:

php artisan serve

افتح Postman أو أي أداة API أخرى، واختبر نقاط نهاية API باستخدام عناوين URL مثل:

  • GET http://localhost:8000/api/products: جلب جميع المنتجات.
  • POST http://localhost:8000/api/products: إنشاء منتج جديد (يجب أن يحتوي الطلب على بيانات المنتج في صيغة JSON).
  • GET http://localhost:8000/api/products/{id}: جلب منتج معين باستخدام معرف المنتج.
  • PUT http://localhost:8000/api/products/{id}: تحديث منتج موجود (يجب أن يحتوي الطلب على بيانات محدثة في صيغة JSON).
  • DELETE http://localhost:8000/api/products/{id}: حذف منتج معين.

الخطوة 6: حماية نقاط نهاية API باستخدام التوثيق

لحماية نقاط نهاية API، يمكنك استخدام التوثيق (Authentication) مع Laravel Sanctum أو Passport. Laravel Sanctum هو خيار خفيف الوزن لتأمين APIs، بينما Passport يوفر مصادقة OAuth كاملة. لإعداد التوثيق، قم بتثبيت Laravel Sanctum أو Passport واتبع التعليمات الموجودة في المستندات الرسمية للارافيل.

الخاتمة

يتيح لك Laravel إنشاء نقاط نهاية API بسهولة ومرونة باستخدام أدوات مدمجة ومتقدمة. من خلال هذا الدليل، تعلمت كيفية إعداد RESTful API، إنشاء نقاط نهاية للتحكم في الموارد، وتأمين واجهات برمجة التطبيقات باستخدام Laravel. استمر في استكشاف المزيد من ميزات Laravel لتحسين تطبيقاتك وتقديم خدمات أفضل للمستخدمين.

التعليقات

اترك تعليقاً