توضیحات

APIها (مخفف Application Programming Interface) رابط‌هایی نرم‌افزاری هستند که نرم افزارها و سخت افزارها با کمک آن می توانند با هم ارتباط برقرار کنند و به یکدیگر دستورات مورد نظرخودشون  را ارسال کنند.بدون وجود API، ارتباط برقرار کردن  بین اجزای کوچک سیستم های سخت افزاری و نرم افزاری وجود ندارد.
API ها شامل چندین نوع هستند، API سخت‌افزاری، API سیستم‌عاملی، API زبان‌های برنامه‌نویسی، کیت‌های توسعهٔ نرم‌افزار(SDK) و API تحت وب (وب سرویس)

وب سرویس : یک پل ارتباطی بین کلاینت و سرور است.شما با کلاینت که میتونه مرورگر یا یک اپلیکیشن موبایل و یا ... درخواستی روی بستر HTTP به سرور ارسال میکنید و سرور با توجه به درخواست شما پاسخی میدهد.برای آشنای بیشتر بخش اول دوره را مشاهده کنید.
که در این دوره ما درمورد API تحت وب (وب سرویس) صحبت میکنیم که خود شامل انواع مختلف هست که REST جز محبوب ترین و پر استفاده ترین نوع وب سرویس ها می باشد.در این دوره قصد داریم به ایجاد یک وب سرویس بر پایه معماری REST با لاراول (laravel) بپردازیم.

دوستان در حال حاضر آخرین ورژن لاراول، ورژن 12 هست و تغییرات جزئی داشته توی مباحث این دوره که ما چند قسمتی که نیاز به توضیحات این تغیرات جزئی بوده را آپدیت کردیم و استفاده از این دوره برای ورژن های بالاتر لاراول بدون مشکل می باشد.

مباحثی که در این دوره گفته میشود شامل :

آشنایی با API

  • HTTP چیست؟
  • هدرها در HTTP
  • کد های وضعیت در HTTP
  • API و REST چیست

API در لاراول

  • ایجاد API Controller
  • ارسال انواع متد ها(GET,POST,PUT,DELETE)
  • validation و error handeler
  • ارسال فایل

API Resources
توضیح قابلیت api resources در لاراول شامل

  • Transform
  • collection
  • wrapper
  • with
  • wenloaded
  • pagination

ورژن بندی

  • دلیل استفاده از ورژن بندی
  • ورژن بندی API

laravel passport
توضیح احرازهویت در API و همچنین JWT , oAuth و لاراول passport

laravel sanctumn
توضیح پکیج sanctumn از لاراول

ایجاد پروژه فروشگاهی ساده شامل بخش های : 

  • دسته بندی
  • برند محصول
  • محصولات
  • ثبت سفارش
  • درگاه پرداخت
  • ثبت تراکنش

توضیح CORS در مرورگر ها

و در نهایت deploy (آپلود پروژه روی سرور) را خدمتتون توضیح میدهیم.

برای تست API ها برای این دوره از ابزار postman استفاده شده که دوره postman هم توی وب سایت قرار گرفته.
حتما ویدیو معرفی دوره را مشاهده کنید.

پیش نیازهای این دوره :


پی اچ پی php laravel لاراول api postman API وب سرویس مای اس کیو ال php ورژن 8 پی اچ پی ورژن 8 لاراول ورژن 11 laravel v11 laravel v12 لاراول ورژن 12

مدرس دوره علی شیخ
مدت دوره 10:16:14
تعداد ویدیو 59

وضعیت دوره : کامل شده
قیمت دوره : 799,000 479,000 تومان
% 40 تخفیف

کامنت های ارزشمند شما:

برای ارسال کامنت ابتدا باید وارد سایت شوید

  • سلام مجدد استاد من رامینم ولی با حساب دیگم وارد شدم الان من تو دوره ساخت فروشگاه سفارش غذا با لاراول شرکت کردم با توجه به چیزایی که در کامنت های قبلی گفتم راجب چیزایی که گفتم پیاده سازی کردم فقط بعضی قسمت ها مانند پنل ادمین ، ارسال آس ام اس و .. نمی‌دونم خواستم بدونم این دوره ساخت فروشگاه اینترنتی سفارش غذا با لاراول رو فقط قسمت هایی که نیاز دارم نگاه کنم یا نه از اول دوره رو تا آخر ببینم چون من الان با react کار کردم و ساختار api و کتابخانه های آماده ری اکت رو برای مثلا اسلایدر یا پیام های toast رو یاد دارم میترسم اگه از اول دوره رو ببینم انگار تداخل بخوره با این شیوه چون تو دوره فقط با لاراول پروژه می‌سازیم ولی در اصل باید با api و یکی از فریمورک های next یا react پروژه زده بشه

    • سلام وقت بخیر رامین عزیز.
      ببیند فرانت و بک اند دوتا موضوع جدا از هم هستند پس تداخلی شکل نمیگیره شما یه دانش فرانت دارید و اگه قصد دارید دانش بک اند و api نویسی هم انجام بدید دیگه میشه دوره های مروبط به api نویسی که حالا ما برای فریمورک لاراول دوره هاش رو داریم مانند همین دوره که زیرش کامنت کردید که نیازه با پیش نیاز هاش آشنا باشید و این دوره را شروع کنید اگه قصد یادگیری بک اند و api نویسی با لاراول را دارید نیازه پیش نیازهاش و همچنین ویدیو ها از ابتدا دیده بشه تا به درک درستی برسید

  • سلام استاد وقت بخیر من هنوز این دوره ندیدم ولی با کمک هوش مصنوعی کتابخانه sanctum و تنظیمات cors تونستم منطق یک سایت رو پیاده سازی کنم با react

    خواستم ازتون بپرسم استفاده از سنکتام برای احراز هویت خوبه یا نه

    و اینکه من از لوکال استوریج برای ذخیره اطلاعات کاربر و توکن استفاده میکنم و تو ری اکت یک هوک ساختم که انگار تو صفحاتی که نیاز به احراز هویت داره میره get میکنه به سرور و اونجا هم اعتبارسنجی میشه اگه اوکی نبود ریسپانس برمیگردونه و تو ری اکت هم سریع navigate میکنه به صفحه لاگین همچنین برای روش افزودن به سبد خرید و ویش لیست هم کانتکست مخصوص به خودشو ساختم و صفحه مربوط به تکمیل خرید و سفارشات و همچنین اعمال هزینه ارسال و مالیات و .. به روش امن تو سرور اوکی کردم ولی قسمت فیلتر کردن محصولات . پنل ادمین و درگاه پرداخت . دیپلوی کردن و هم هنوز یادنگرفتم با توجه به چیزهایی که گفتم الان بنظرتوت کدوم دوره رو ببینم بهتره که زودتر کارم راه بیفته و هم کمتر هزینه کنم ؟؟


    و در سوال اخر هم اینکه من تو این پیاده سازی منطق پروژم انگار این رو فرض کردم که ری اکت و لاراول سروراشون از هم جداست و بنظرم این روش خوبه و امن چون اگه یک قسمت بدست مهاجم افتاد قسمت دیگه هنوز اوکیه نظر شما چیه مثلا یکی باشه store.ir و اون یکی باشه api.store.ir ؟؟

    ممنون میشم با دقت بخونید و جواب بدید😊

    • سلام وقت بخیر رامین عزیز
      بله هیچ مشکلی در استفاده از sanctum نیست هم روش توکن داره که شما استفاده کردید و هم روش ذخیره در کوکی که حالا قصد دارم انشاا... برای react دوره فروشگاهی قرارش بدم که اونجا توضیحش میدم. بقیه موارد هم اوکیه خوب و درست پیش رفتی در خصوص دپلوی که توی خوده دوره react گفته شده از طرفی دوره نکست و فروشگاهی نکست هم توی سایت هست نکست جی اس فریمورک ری اکت هست
      در خصوص سوال دومتون ببینید هکر ها عموما یک سرور رو در نظر میگیرن و حمله انجام میده و اونم دیتابیسش هست بنده تخصصی توی امنیت ندارم و دقیق نمیدونم اما موردی که فرمودید و مثال زدید بشکل ساب دامین هست و توی سرور هستند برای سرور مجزا دامنه کلا متفاوت هست

    • ممنون از توضیحات شما اره منظورم همون زیر دامنه بود 👍🏻

      برای امنیت هم خدارو شکر تو فریمورک ها کمتر رخ میده

      خب برای سوال آخرم من تو فکرم هست که باید next js رو یاد بگیرم ولی قبلش باید دوره فروشگاه واقعی لاراول رو ببینم بنظرتون با توجه به چیز هایی که خدمتتون عرض کردم از دوره های لاراولی که گذاشتید کدوم دوره بیشتر منو آماده می‌کنه و انگار برای یک دوره فروشگاهی از بقیه پیشرفته تر و کامل تره که بعد دیدنش برم سراغ نکست و بعد دیگه بعد از زدن یک پروژه تستی کامل ، پروژه واقعی بگیرم

    • خواهش میکنم، ببینید برای بک اند شما نیاز api نویسی کنی که دوره هاش جدا هست و ساخت وب سرویس با لاراول دوره اش توی سایت هست و همچنین فروشگاهی که پیش نیاز هاش هم گفته شده
      فقط اینکه عجله نکنید بنده نمیدونم چقدر با مباحث آشنایی دارید یا چه مدت توی این حوزه فعالیت میکنید اما توی سطح بالای هستند مطالب و نیاره به خوبی کار و آشنا بشید. موفق و پیروز باشید

  • موضوع من اصلا استفاده از کوکی نیست
    موضوع در بکار گیری اون در سطح laravel sanctum هست برای احراز هویت و نگه داشتن توکن و استفاده در سطح دیگه هست
    برای مثال ما یاد گرفتیم که یک توکن با لاراول سنکتوم بسازیم و برای لاگین وبررسی لاگین بودن و یا لاگ اوت از اون استفاده میکردیم

    اما اگر بخوایم توکت رو در کوکی ذخیره کنیم چی؟
    من تا ارسالش از بک اند به فرانت تلاش کردم اما وقتی میخوایم بررسی کنیم که یک کاربر لاگین کرده یا نه مشکل اصلی خودشو نشون میده
    من حدس میزنم که در ورژن های جدید (البته الان دسترسی به دایکیومنت نداریم که مطمئن بشیم) توابع فرق کردن یا اینکه لاراول سنکتوم برای کوکی ها بهینه نشده .
    من در این بخش بخش هایی از کدها رو میزارم لطفا اگر اشتباهی هست تصحیحم کنید
    ببین من دارم یک وبسایت مینویسم
    که vue.js برای فرانت اند و Laravel برای بک اند استفاده میشنهدو در دو پوشه متفاوت ولی در یک پوشه قرار دارند
    نحوه ارتباط برقرر کردنشون باهم هم از طریق api و تابع fetch هست

    1- ما یک درخواست به سمت سرور از سمت فرانت ارسال میکنیم و نام و پسورد کاربر رو میفرستیم تا بتونیم لاگین کنیم

    async function sendInformation() {
    
    console.log(INPUTUser.value, INPUTPass.value)

    const response = await fetch('/api/login', {
    method: 'POST',
    credentials: 'include',
    headers: {
    'Content-Type': 'application/json',
    },
    body: JSON.stringify({
    name: INPUTUser.value,
    password: INPUTPass.value,
    }),
    })
    if (!response.ok) {
    const errorData = await response.json()
    console.error('Error:', errorData)
    } else {
    const data = await response.json()
    console.log('Success:', data)
    }
    }

    2- در سمت سرور اطلاعات بررسی میشن و بعد از بررسی میشن و برای اون یوزر یک توکن توسط سنکتوم ساخته میشه و با پاسخ برای فرانت ارسال میشه
    public function login(Request $request)
    
    {
    $validated = Validator::make($request->all(), [
    'name' => 'required|string',
    'password' => 'required',
    ]);
    if ($validated->fails()) {
    return response()->json($validated->errors()->keys());
    }
    $user = User::where('name', $request->name)->first();


    if ($user) {
    $timeExpiredToken = time() + 420;
    $expiresAt = Carbon::createFromTimestamp($timeExpiredToken);
    $tokenRef = $user->createToken('auth_token', ['*'], $expiresAt)->plainTextToken;
    return response()->json([
    'message' => 'User registered successfully',
    'user' => 'oky',
    ], 201)
    ->cookie('token',$tokenRef,$timeExpiredToken,'/',null,false,true,false,'lax');
    }else {
    return response("Error");
    }


    }


    ** حالا این بخش اوکی هست و توکن در قالب کوکی به سمت فرانت ارسال و ذخیره میشه


    حالا ما نیاز داریم که برای تست برسی کنیم که آیا کاربر لاگین هست یا نه
    پس باید اطلاعات رو از کوکی بگیریم
    من در زیر یک فانکشن نوشتم که توی بخش اولیه بتونم با توابعی که یادمون دادین بتونم مقادیر رو بگیرم
    اما ....
    
    
    public function checkUser(Request $request)
    {
    $cookie = $request->cookie('token');
    $token = auth()->user()->tokens();
    // if ($token) {
    return response()->json(
    [
    'token' => $token,
    'cookie' => $cookie
    ], 404);
    // }
    // return PersonalAccessToken::findToken($cookie);
    }

    در این بخش کوکی دریافت میشه اما $token = auth()->user()->tokens(); همیشه null هست

    • اهان شما دارید در خصوص laravel sanctum صحبت میکنید. خب توی داکیومنتش از روش web باید استفاده کنید نه api متاسفانه اینرنت نیست و روندش هم متفاوت هست و بصورت کلی یک آدرس میده برای دریافت csrf token و استفاده ازش برای زدن درخواست بصورت post به مثلا متد login در کنترولر و اونجا از login یا attempt از کلاس Auth استفاده کنید. متاسفانه نیاز به داکیومنتش هست.

  • ما توی این پروژه دیدیم که تست ها روی POSTMAN انجام میشد
    اما اکثر api ها با استفاده از کوکی ها کار میکنن
    و ما این موضوع رو در این آموزش بهش پرداخته نشده و ای کاش میشد
    اما درخواست من از استاد عزیز ین هست که نحوه کار با این سیستم به همراه کوکی ها رو روی مرورگر آموزش بدن و یا ارجاع بدن به آموزش مرتبط

    • سلام وقت بخیر.
      کوکی محدودیت حجم دیتا برای ارسال داره و گاها برای یکسری کار خاص میشه استفاده کرد و از اونطرف توی برنامه های موبایل نمیشه استفاده کرد و دیتای api را توی بدنه درخواست ارسال میکنن نه کوکی
      بازم توی لاراول که جواب برمیگردونید متد برای ست کردن کوکی داره و توی پست من هم بخش کوکی هست و فرقی با مروگر نداره
      در سمت فرانت ام که js میتونه به کوکی های که بشکل httpOnly نیستند دسترسی داشته باشه
      استفاده از کوکی اصلا چیز پیچیده ای نیست.

  • سلام
    من توی کامنت قبلیم یک سوال مطرح کرم و پاسخ شما هم تقریبا درست بود
    اما الن متوجه شدم توی بخش تعریف کوکی در سمت لاراول مشکل دارم
    چون من ویو رو بصورت جداگانه و لاراول رو هم بصورت جداگانه run کردم بخاطر همین هرکدوم روی یک آدرس هستن ویو روی localhost و لاراول روی 127.0.0.1 و هر کدوم روی یک پورت مجزا از هم هستن ، الان داشتم توی آموزش هایی که ازتون شرکت کردم نگاه میکردم ولی بخش تعریف کوکی رو پیدا نمیکنم
    میشه لطفا توی همین پاسخ به این کامنت یا یک مثال بزنید یا اینکه بخش آموزشش رو بزارید که بتونم بررسی دقیقتری داشته باشم
    من دنبال بررسی تمام مقادیر قابل تعریف روی کوکی ها هستم

    ----پیشنهاد دیگری هم اگر دارید بفرمایید

    • سلام وقت بخیر.
      برای تعریف توی لاراول میتونید به این شکل تست کنید. البته در حال حاضر اینترنت هم قطع هست و نمیشه داکیومنت لاراول رو بررسی کرد

      return response('okey')->withCookie(cookie('name', 'value', $minutes));

      در خصوص پیشنهاد دیگه هم شما میتونید دیتاهای مورد نظرتون رو توی بدنه جواب دریافت کنید و توی لوکال استوریج ذخیره و استفاده کنید توی فرانت

  • سلام وقتتون بخیر من امید احمدی هستم دانشجوی خودتون
    من داشتم یک تمرینی رو انجام میدادم - یک وب سایت هست که بصورت api فرانت (Vue.js) و بک اند (Laravel)

    الان میخوام یک درخواست با متد fetch بفرستم سمت بک اند که یک سری اطلاعات رو با خودش بیاره حالا این اطلاعات بکنار قرار هست که یک کوکی رو هم به همراه خودش بیاره .

    حالا مشکل من اینجاست که اطلاعات و کوکی میان ولی کوکی توی مرورگر ذخیره نمیشه و به همین خاطر من به مشکل بر میخورم

    این بخش کد vue.js من هست

    
    async function sendInformation() {
    
    await fetch('http://۱۲۷.۰.۰.۱:۸۰۰۰/api/checkUser', {
    method: 'GET',
    }).then(response => {
    console.log(response.headers.getSetCookie('getSetCookie.name'))
    })
    }

    این هم بخش کد لاراول من
    
    
    public function checkUser()
    {
    return response('okey')->cookie(
    'token',
    'ali hast'
    , time() + ۷۲۰۰,
    true,
    true,
    );
    }

    من یک تاکید بزارم روی این موضوع
    من کاملا میتونم توی پاسخ به درخواست من که از سمت سرور میاد توی بخش هدر کوکی ست شده رو ببینم اما توی مرورگر نمیدونم چجوری ستش کنم؟

    • سلام وقت بخیر.
      توی درخواست fetch مقدار credentials برابر با include قرار بدید مثلا بعد از method و تست کنید ببینید توی بخش cookies در مرورگر ذخیره میشه

      credentials: 'include',

  • درود استاد ، قصد دارم دورتون رو تهیه کنم ولی با توجه به دانشجو بودنم در توانم نیست این همه هزینه کنم کی برای دورتون تخفیف میزارید که بتونم استفاده کنم؟

    • سلام وقت بخیر.
      عذرخواهی میکنم شاید برای عید نوروز قرار بدیم. قیمت دوره ها واقعا پایین ترین حدش هست.

  • سلام
    قبلا حجم پروژه لاراولی که ایجاد میکردم 120 مگ بود از وقتی کامپوزرو آ\دیت کردم حجم پروژه بالای 3 گیگ میشه
    چطور میتونم مشکلو برطرف کنم؟

    • سلام وقت بخیر.
      بصورت کلی میشه چندتا کار انجام داد. مثلا پاک کردن کش کامپوزر
      composer clear-cache
      پوشه vendor رو حذف کنید و دوباره نصب کنید
      composer install
      یا به این شکل که میتونه بهتر باشه
      composer install --optimize-autoloader --no-dev
      همچنین میشه بررسی کرد چه پکیجی حجم زیادی گرفته و اگه پروژه production هست و روی سرور، پکیچ های dev رو حذف کرد

    • سلام وقت بخیر.
      متاسفانه بخاطر اختلال اینترنت هست.
      یکبار دیگه تلاش کنید اگه همچنان مشکل بود به تلگرام وب پروگ پیام بدید.
      webprogSupport@

  • درود فراوان!
    من این دوره رو تهیه و کامل دیدم.
    آموزش ساخت وب سرویس با لاراول (Laravel Rest Api) پروژه محور
    واقعا دوره خوب،پرمحتوا و ارزشمندی بود به همین خاطر به همه دوستانی که قصد دارند با لاراول api نویسی کنند حتما این دوره عالی رو توصیه می کنم.
    سپاس!

    • سلام وقت بخیر.
      ممنون از شما و حمایتتون
      خداروشکر دوره براتون مفید و کاربردی بوده

  • سلام وقت بخیر خسته نباشید
    من دوره رایگان لاراول را مشاهده کردم و میخواستم برای ادامه مسیر api رو یاد بگیرم چون فرانت قبلا کار کردم به livewire نیاز ندارم و با api یا inertia میخوام کار کنم. بنظرتون برای ادامه مسیر این دوره آموزش وب سرویس رو ببینم یا دوره وب سرویس فروشگاه اینترنتی؟ (ترجیحا میخوام یکیش رو ببینم)

    • سلام وقت بخیر.
      برای api نویسی در لاراول این دوره و دوره ای ساخت api فروشگاه اینترنتی را نیازه که مشاهده کنید و توی هر دوره پیش نیاز های دوره گفته شده

    • اگ بخوام یکیش که بهتره رو ببینم کدوم رو پیشنهاد میکنید؟
      امکان خرید هردو دوره رو ندارم
      و اینکه برای پروژه زدن با inertia دقیقا چه دوره ای برای لاراول کارم رو راه میندازه؟ چون نه از api استفاده میکنه نه از livewire
      دقیقا چطوری باید بک اند رو زد؟

    • ببینید در قدم اول شما باید با لاراول به خوبی آشنا و کار کرده باشید. یعنی دوره رایگان لاراول و دوره ساخت فروشگاه اینترنتی سفارش غذا با لاراول را مشاهده کنید که با لاراول در قالب یک پروژه بهتر آشنا باشید.
      حالا در قدم بعدی میتونید با inertia آشنا بشید و آموزش های مرتبط با اون را مشاهده کنید توی سایت ما آموزشی براش نداریم.
      در عمل inertia هم داره دیتا را بصورت api برای فرانت ارسال میکنه که در سمت فرانت از vue و react میتونید استفاده کنید که نیازه، دانش این موارد هم داشته باشید.
      در کل در سطح بالای هست و با دیدن یک دوره و صرفا چند ماه نمیشه، و برنامه نویسی مثله هر شغل دیگه ای نیاز به دانش، مهارت، تمرین و تجربه داره که یعنی صرف زمان و هزینه

    • برای عید تخفیف میذارید چند دوره رو خریداری کنم؟
      دانشجو هستم یکم هزینه ها بالاست

  • سلام استاد خیلی ممنون از اموزش بسیار زیباتان بسیار موثر بود
    یک سوال استاد من با لاراول یک پروژه طراحی کردم و روی سرو دیپلوی
    اما مشکل اپلود دارد درواقع همان مشکل اشاره public به public_html

    $app->app->bind('path.public' , function(){
    
    return __DIR__;
    });

    از این کدم درست طبق اموزش استفاده کردم اما درست کار نمی کنه
    باید چکار کنم
    خواهشا کمک کنید

    • سلام وقت بخیر.
      ممنون از شما و حمایتتون
      جلسه deploy یا آپلود پروژه در دوره آپدیت شده برای ورژن 11 لاراول که نیازه یکبار دیگه اون قسمت را مشاهده کنید.

  • سلام مهندس
    روزتون بخیر
    ببخشید تو یه پروژه دستتون باز باشه بابت انتخاب Rest یا Graphql کدومش رو انتخاب میکنید؟
    اگه امکانش هست دلیل انتخابتون رو هم بفرمائید لطفا

    • سلام وقت بخیر.
      بنده خیلی آشنایی با graphql ندارم.
      متد rest خیلی بیشتر استفاده و شناخته شده هست بازم بیشتر تحقیق کنید.

  • سلام
    مباحث کامل بود و ممنون از زحماتتون
    همیشه بحث وب سوکت برای لاراول مشکل بود
    خودم از pusher استفاده کردم و سرعت و محدودیت کانکشن خیلی کمی داره
    اینکه جدیدا Laravel Reverb اومده و منابع خیلی کمی راجبش صحبت کردن
    -امکانش هست یه پروژه realtime بصورت api بسازین با همین پکیج؟