إنشاء API Endpoints في Laravel
المقدمة
واجهة برمجة التطبيقات (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 لتحسين تطبيقاتك وتقديم خدمات أفضل للمستخدمين.
اترك تعليقاً