Api in Laravel 11

2024-10-14 وقت القراءه : 2 دقائق

بالوضع الإفتراضي، عند تثبيت مشروع لارافيل لا يأتي مسبقا للتعامل مع api، وحتى نتمكن من ذلك يجب علينا إستخدام الأمر

php artisan install:api

بعد تنفيذ الأمر يتم إضافة الملفات التالية:

  • إضافة الملف sanctum.php .
  • إضافة الملف api.php في المجلد routes.
  • إضافة migration بإسم في الملجلد  database.
  • إضافة api: __DIR__.'/../routes/api.php', في الملف bootstrap/app.php وهو المخصص للتعامل مع routes.


في هذا الدرس سوف نتعرف على كيفية إستخدام وتخصيص api route في laravel 11.


ماذا لو أردنا إعاده تسمية الملف من api.php إلى api2.php

هنا بكل بساطه يجب تسجيل هذا الملف في bootstrap/app.php وإستبدال api.php بـ api2.php

->withRouting(
    web: __DIR__.'/../routes/web.php',
    //api: __DIR__.'/../routes/api.php',
    api: __DIR__.'/../routes/api.php2',
    commands: __DIR__.'/../routes/console.php',
    health: '/up',
)


ماذا لو أردنا إستخدام api/v1

هنا نحتاج إضافة apiPrefix : 'api/v1/'

->withRouting(
    web: __DIR__.'/../routes/web.php',
    api: __DIR__.'/../routes/api.php',
    apiPrefix: 'api/v1/',
    commands: __DIR__.'/../routes/console.php',
    health: '/up',
)

وكذلك لو إحتجنا أن يكون route/v2

هنا نعدل apiPrefix

apiPrefix: 'api/v1/',


إضافة Versioning للـ api

مثلا لو أردنا إن يكون لدينا api/v1 وكذلك api/v2

هنا بالإضافة إلى apiPrefix يمكن لنا إستخدام الدالة then

->withRouting(
    web: __DIR__.'/../routes/web.php',
    api: __DIR__.'/../routes/api.php',
    apiPrefix: 'api/v1/',
    commands: __DIR__.'/../routes/console.php',
    health: '/up',
    then: function() {
        Route::prefix('api/v2')
            ->middleware('api')
            ->group(base_path('routes/apiv1.php'));
    }
)

بذلك نكون قد قمنا بتسجيل api/v2 مع العلم أنه يجب إنشاء apiv2.php بداخل المجلد routes


ماذا لو أردنا إضافة api/v3

بكل بساطة نقوم بإضافة prefix أخر بداخل then

->withRouting(
    web: __DIR__.'/../routes/web.php',
    api: __DIR__.'/../routes/api.php',
    apiPrefix: 'api/v1/',
    commands: __DIR__.'/../routes/console.php',
    health: '/up',
    then: function() {
        Route::prefix('api/v2')
            ->middleware('api')
            ->group(base_path('routes/api/v2.php'));


        Route::prefix('api/v2')
            ->middleware('api')
            ->group(base_path('routes/apiv2.php'));
    }
)

وكذلك إنشاء الملف apiv2.php

إضافة تعليق
Loading...