آموزش ساخت وب اپلیکیشن با Go - سطح متوسط
✅ سرفصل و جزئیات آموزش
آنچه یاد خواهید گرفت:
- چگونه یک وبسایت فرانتاند با استفاده از Go بسازید؟
- چگونه یک API بکاند با استفاده از Go بسازید؟
- چگونه چندین اپلیکیشن را از یک پایگاه کد واحد بسازید؟
- چگونه میکروسرویسها را در Go بسازید؟
- احراز هویت کاربر در Go
- احراز هویت API با استفاده از توکنهای stateful
- چگونه به کاربران اجازه دهید رمز عبور خود را به روشی امن بازنشانی کنند؟
- چگونه پردازش کارت اعتباری Stripe را با یک بکاند Go یکپارچه کنید؟
- انجام پرداختهای یکباره یا دورهای با Stripe
- بهترین شیوهها برای انجام تراکنشهای امن کارت اعتباری
پیشنیازهای دوره
- درک اولیه از زبان برنامهنویسی Go
- درک اولیه از HTML، CSS و JavaScript
- درک اولیه از سینتکس SQL
توضیحات دوره
این دوره ادامهای بر دوره ساخت وب اپلیکیشنهای مدرن در Go است. در این دوره، ما فراتر از دوره اول پیش میرویم. ما یک اپلیکیشن نمونه تجارت الکترونیک (E-Commerce) خواهیم ساخت که شامل چندین اپلیکیشن مجزا است: یک front end (که محتوا را به عنوان صفحات وب به کاربر نهایی ارائه میدهد)؛ یک back end API (که در صورت لزوم توسط front end فراخوانی میشود)، و یک microservice که تنها یک تسک را انجام میدهد، اما آن را به بهترین شکل ممکن انجام میدهد (ساخت دینامیک فاکتورهای PDF و ارسال آنها به مشتریان به عنوان پیوست ایمیل).
این اپلیکیشن هم آیتمهای تکی را به فروش میرساند و هم به کاربران اجازه میدهد اشتراک ماهانه خریداری کنند. تمام تراکنشهای کارت اعتباری از طریق Stripe پردازش خواهند شد که مسلماً یکی از محبوبترین سیستمهای پردازش پرداخت موجود امروزی است و دلیل خوبی هم دارد: توسعهدهندگان آن را دوست دارند. Stripe یک API (رابط برنامهنویسی اپلیکیشن) غنی ارائه میدهد و در بیش از 35 کشور در سراسر جهان در دسترس است و با بیش از 135 واحد پولی کار میکند. به معنای واقعی کلمه میلیونها سازمان و کسبوکار از نرمافزارها و APIهای Stripe برای پذیرش پرداختها، ارسال وجه و مدیریت آنلاین کسبوکار خود با داشبورد Stripe استفاده میکنند. با این حال، در بسیاری از موارد، توسعهدهندگان میخواهند راهحل سفارشیتری بسازند و نیازی نباشد که کاربران نهایی هم به وب اپلیکیشن و هم به داشبورد Stripe وارد شوند. این دقیقاً همان چیزی است که ما در این دوره پوشش خواهیم داد.
ما با یک Virtual Terminal ساده شروع خواهیم کرد که میتواند برای پردازش تراکنشهای به اصطلاح «بدون حضور کارت» استفاده شود. این یک وب اپلیکیشن کاملاً کاربردی خواهد بود که از پایه با Go (که گاهی اوقات Golang نامیده میشود) ساخته شده است. فرانتاند با استفاده از پکیج غنی html/template در Go رندر میشود و کاربران احراز هویت شده قادر خواهند بود پرداختهای کارت اعتباری را از یک فرم امن و یکپارچه با Stripe API پردازش کنند. در این بخش از دوره، موارد زیر را پوشش خواهیم داد:
- چگونه یک وب اپلیکیشن امن و آماده برای محیط پروداکشن در Go بسازیم؟
- چگونه اطلاعات لازم برای یک تراکنش آنلاین امن کارت اعتباری را جمعآوری کنیم؟
- چگونه Stripe API را از یک بکاند Go فراخوانی کنیم تا یک paymentIntent به معنی قصد پرداخت (آبجکت Stripe برای مجوز و انجام یک تراکنش) ایجاد کنیم؟
پس از اتمام این بخش، در بخش بعدی دوره، یک وب اپلیکیشن دوم خواهیم ساخت که شامل یک وبسایت ساده است که به کاربران امکان خرید یک محصول یا خرید اشتراک ماهانه را میدهد. باز هم، این یک وب اپلیکیشن خواهد بود که از پایه با Go ساخته شده است. در این بخش از دوره، موارد زیر را پوشش خواهیم داد:
- چگونه به کاربران امکان خرید یک محصول تکی را بدهیم؟
- چگونه به کاربران امکان خرید اشتراک ماهانه دورهای (یک Stripe Plan) را بدهیم؟
- چگونه لغوها و بازپرداختها را مدیریت کنیم؟
- چگونه تمام اطلاعات تراکنش را در یک پایگاه داده ذخیره کنیم (برای بازپرداختها، گزارشگیری و غیره)
- چگونه یک تراکنش را بازپرداخت (refund) کنیم؟
- چگونه یک اشتراک را لغو کنیم؟
- چگونه دسترسی به فرانتاند را امن کنیم (از طریق session authentication)؟
- چگونه دسترسی به API بکاند را امن کنیم (با استفاده از توکنهای stateful)؟
- چگونه کاربران را مدیریت کنیم (افزودن/ویرایش/حذف)؟
- چگونه به کاربران اجازه دهیم رمز عبور خود را به صورت امن بازنشانی کنند؟
- چگونه یک کاربر را از سیستم خارج کرده و حساب او را فوراً از طریق websockets لغو کنیم؟
پس از تکمیل این قسمت، کار بر روی میکروسرویس را شروع خواهیم کرد. میکروسرویس یک رویکرد خاص برای توسعه نرمافزار است که فرض اصلی آن ساخت اپلیکیشنهای بسیار کوچک است که یک کار را انجام میدهند، اما آن را به خوبی انجام میدهند. یک میکروسرویس به هیچ وجه اهمیتی نمیدهد که چه اپلیکیشنی آن را فراخوانی میکند؛ کاملاً مجزا و کاملاً بیطرف است. ما یک میکروسرویس خواهیم ساخت که کارهای زیر را انجام میدهد:
- یک payload از نوع JSON که یک خرید تکی را توصیف میکند، میپذیرد.
- یک فاکتور PDF با اطلاعات موجود در JSON payload تولید میکند.
- یک ایمیل برای مشتری ایجاد کرده و PDF را به آن پیوست میکند.
- ایمیل را ارسال میکند.
تمام این کامپوننت ها (فرانتاند، بکاند و میکروسرویس) با استفاده از یک پایگاه کد واحد ساخته خواهند شد که با استفاده از Gnu Make چندین فایل باینری تولید میکند.
این دوره برای چه کسانی مناسب است؟
- توسعهدهندگانی که میخواهند Stripe را در اپلیکیشنهای خود یکپارچه کنند.
- توسعهدهندگانی که میخواهند یاد بگیرند چگونه یک API بکاند در Go بسازند.
- توسعهدهندگانی که میخواهند بهترین شیوهها برای ساخت اپلیکیشنهای مدرن در Go (و JavaScript) را یاد بگیرند.
آموزش ساخت وب اپلیکیشن با Go - سطح متوسط
-
مقدمه 05:06
-
کمی درباره من 01:01
-
اشتباهات. همه ما اشتباه میکنیم 01:06
-
چگونه درخواست کمک کنیم؟ 01:14
-
نصب Go 01:31
-
نصب یک IDE 03:14
-
دریافت حساب کاربری رایگان Stripe 00:27
-
نصب make 01:27
-
نصب MariaDB 02:13
-
دریافت یک کلاینت دیتابیس 00:51
-
چه چیزی خواهیم ساخت؟ 02:16
-
راهاندازی یک وب اپلیکیشن ساده 14:56
-
راهاندازی روتها و ساخت یک تابع رندر 20:39
-
نمایش یک صفحه 08:56
-
یک افزونه بهتر برای قالبهای Go و VS Code 03:10
-
ایجاد فرم 11:32
-
اتصال فرم ما به stripe.js 10:43
-
اعتبارسنجی سمت کلاینت 07:48
-
دریافت paymentIntent - راهاندازی پکیج بکاند 15:45
-
دریافت paymentIntent - شروع کار بر روی API بکاند 09:32
-
دریافت paymentIntent - راهاندازی یک روت و handler و استفاده از make 10:50
-
دریافت paymentIntent - تکمیل handler ما 08:47
-
بهروزرسانی JavaScript فرانتاند برای فراخوانی handler مربوط به paymentIntent 09:01
-
دریافت payment intent و تکمیل تراکنش 17:34
-
تولید رسید 11:50
-
پاکسازی URL مربوط به API و کلید انتشار Stripe در فرم ما 04:07
-
دانش خود را بسنجید None
-
چه چیزی خواهیم ساخت؟ 01:35
-
ایجاد دیتابیس 01:33
-
اتصال به دیتابیس 08:18
-
ایجاد یک صفحه محصول 05:56
-
ایجاد فرم محصول 04:19
-
انتقال JavaScript به یک فایل قابل استفاده مجدد 04:28
-
تغییر handler برای دریافت یک struct 09:24
-
بهروزرسانی صفحه Widget برای استفاده از دادههای ارسال شده به قالب 04:55
-
ایجاد یک تابع قالب formatCurrency 03:26
-
تست عملکرد تراکنش 04:12
-
ایجاد یک جدول دیتابیس برای آیتمهای فروشی 10:42
-
اجرای مایگریشنهای دیتابیس 02:55
-
ایجاد مدلهای دیتابیس 10:20
-
کار بر روی توابع دیتابیس 05:51
-
درج یک تراکنش جدید 03:58
-
درج یک سفارش جدید 02:20
-
یک نکته: رفع مشکل در محاسبه مبلغ 05:20
-
دریافت اطلاعات بیشتر در مورد یک تراکنش 13:47
-
مشتریان 10:19
-
شروع ذخیره اطلاعات مشتری و تراکنش 10:09
-
ایجاد متد دیتابیس برای ذخیره مشتری 02:18
-
ذخیره مشتری، تراکنش و سفارش از طریق handler 16:27
-
اجرای یک تراکنش تستی 06:34
-
رفع یک خطای دیتابیس و ذخیره جزئیات بیشتر 08:21
-
ریدایرکت کردن پس از ارسال (post) 06:35
-
سادهسازی handler مربوط به PaymentSucceeded 15:58
-
بازنگری ترمینال مجازی ما 09:37
-
رفع یک اشتباه در تابع قالب formatCurrency 01:39
-
در این بخش چه چیزی خواهیم ساخت؟ 02:01
-
ایجاد یک Plan در داشبورد Stripe 03:05
-
ایجاد stub برای صفحه فرانتاند و handler 04:39
-
راهاندازی فرم 09:19
-
کار بر روی JavaScript برای پلنها 07:03
-
ادامه کار با Javascript برای اشتراک در یک پلن 04:49
-
ایجاد یک handler برای درخواست POST پس از اشتراک کاربر 06:28
-
ایجاد متدها برای ایجاد یک مشتری Stripe و اشتراک در یک پلن 08:51
-
بهروزرسانی handler ما برای تکمیل یک اشتراک 06:11
-
ذخیره اطلاعات تراکنش و مشتری در دیتابیس 09:59
-
ذخیره اطلاعات تراکنش و مشتری 2 14:29
-
نمایش صفحه رسید برای پلن برنزی 07:16
-
مقدمه 03:45
-
ایجاد یک صفحه ورود 07:03
-
نوشتن stub جاوا اسکریپت برای احراز هویت در بکاند 03:24
-
ایجاد یک روت و handler برای احراز هویت 13:37
-
ایجاد یک تابع writeJSON helper 04:13
-
شروع فرآیند احراز هویت 05:56
-
ایجاد یک تابع invalidCredentials helper 03:07
-
ایجاد یک تابع passwordMatches helper 06:19
-
اطمینان از عملکرد صحیح همه چیز 01:45
-
ایجاد یک تابع برای تولید توکن 07:25
-
تولید و ارسال توکن 03:55
-
ذخیره توکن در دیتابیس 07:31
-
ذخیره توکن در حافظه محلی (local storage) 08:04
-
تغییر لینک ورود بر اساس وضعیت احراز هویت 09:23
-
بررسی احراز هویت در بکاند 11:21
-
کمی مرتبسازی 00:46
-
ایجاد توابع stub برای اعتبارسنجی توکن 04:49
-
استخراج توکن از هدر authorization 04:28
-
اعتبارسنجی توکن در بکاند 06:16
-
تست اعتبارسنجی توکن ما 05:22
-
چالش: بررسی انقضا 01:16
-
راه حل چالش 06:19
-
پیادهسازی میانافزار (middleware) برای محافظت از روتهای خاص 03:34
-
تست یک روت محافظتشده 02:26
-
تبدیل post ترمینال مجازی برای استفاده از بکاند 10:16
-
تغییر صفحه ترمینال مجازی برای استفاده از fetch 13:08
-
تأیید تراکنش ذخیرهشده 02:39
-
نوشتن میانافزار در فرانتاند برای بررسی احراز هویت 05:35
-
محافظت از روتها در فرانتاند 09:24
-
خروج از سیستم از فرانتاند 04:22
-
ذخیره سشنها در دیتابیس 05:30
-
بازنشانی رمز عبور 09:48
-
ارسال ایمیل بخش 1 14:15
-
Mailtrap.io 01:48
-
ارسال ایمیل بخش 2 10:44
-
ایجاد قالبهای ایمیل و ارسال یک ایمیل تست 10:12
-
پیادهسازی لینکهای امضاشده برای پیام ایمیل ما 12:44
-
استفاده از پکیج urlsigner ما 06:33
-
ایجاد روت و handler برای بازنشانی رمز عبور 06:19
-
راهاندازی صفحه بازنشانی رمز عبور 06:45
-
ایجاد یک روت بکاند برای مدیریت بازنشانی رمز عبور 09:12
-
تنظیم تاریخ انقضا برای ایمیلهای بازنشانی رمز عبور 03:21
-
افزودن یک پکیج رمزنگاری 12:19
-
استفاده از پکیج رمزنگاری برای ایمنسازی بازنشانی رمز عبور 05:27
-
بهبود فرانتاند و راهاندازی منوی ادمین 07:30
-
راهاندازی صفحات stub برای فروشها و اشتراکها 06:22
-
بهروزرسانی مایگریشنها و بازنشانی دیتابیس 03:31
-
لیست کردن تمام فروشها: کوئری دیتابیس 04:57
-
لیست کردن تمام فروشها: تابع دیتابیس 05:58
-
لیست کردن تمام فروشها: نوشتن handler و روت API 02:02
-
لیست کردن تمام فروشها: جاوا اسکریپت فرانتاند 06:26
-
نمایش نتایج در یک جدول 05:25
-
زیباتر کردن جدول و افزودن چند بررسی در JavaScript 04:52
-
راه حل چالش 02:08
-
نمایش یک فروش: بخش 1 11:24
-
نمایش یک فروش: بخش 2 05:00
-
نمایش یک اشتراک 04:44
-
بازپرداختها از داشبورد Stripe 01:01
-
افزودن تابع بازپرداخت به پکیج cards 03:22
-
ایجاد یک handler در API برای پردازش بازپرداختها 06:55
-
بهروزرسانی فرانتاند برای بازپرداختها 14:10
-
بهبود فرانتاند 03:19
-
افزودن کامپوننتهای UI به صفحه فروش 09:05
-
بهروزرسانی وضعیت به بازپرداختشده در دیتابیس 04:00
-
ثبت شناسه اشتراک 03:59
-
افزودن تابع CancelSubscription به پکیج cards 03:03
-
ایجاد یک handler برای لغو اشتراک 05:33
-
تغییر فرانتاند 05:41
-
تکمیل فرانتاند 03:21
-
ایجاد یک متد دیتابیس برای صفحهبندی تمام سفارشها 06:46
-
تغییر handler مربوط به AllSales برای استفاده از دادههای صفحهبندی شده 04:01
-
بهروزرسانی قالب all-sales.page.gohtml 05:37
-
بهبود صفحهبندی در فرانتاند 09:32
-
افزودن listener به دکمههای ناوبری صفحه 04:19
-
هدایت کاربر به صفحه صحیح دادهها با کلیک 03:17
-
چگونه صفحهبندی را در صفحه همه اشتراکها پیادهسازی کردم؟ 02:14
-
راهاندازی قالبها برای مدیریت کاربران 05:59
-
افزودن روتها و handlerها در فرانتاند 02:29
-
نوشتن توابع دیتابیس برای مدیریت کاربران 10:28
-
ایجاد یک handler و روت برای همه کاربران در بکاند 01:58
-
بهروزرسانی فرانتاند برای فراخوانی AllUsers 02:31
-
نمایش لیست کاربران 04:02
-
ایجاد فرم افزودن/ویرایش کاربر 07:03
-
فراخوانی API بکاند برای دریافت یک کاربر 05:52
-
Populate کردن فرم کاربر و یک چالش 06:43
-
راه حل چالش 02:55
-
ذخیره یک کاربر ویرایششده - بخش 1 05:44
-
ذخیره یک کاربر ویرایششده - بخش 2 08:42
-
حذف یک کاربر 07:42
-
حذف توکن کاربر حذفشده از دیتابیس 03:28
-
راهاندازی websockets 18:49
-
اتصال به WebSockets از مرورگر 06:24
-
خارج کردن کاربر حذفشده از سیستم از طریق websockets 05:59
-
میکروسرویسها چیستند؟ 01:36
-
راهاندازی یک میکروسرویس ساده 14:07
-
دریافت داده با میکروسرویس ما 06:43
-
تولید فاکتور به صورت PDF 20:21
-
تست PDF ما 05:29
-
ارسال فاکتور از طریق ایمیل 08:14
-
فراخوانی میکروسرویس هنگام فروش یک Widget 09:40
-
چالش 01:34
-
راه حل 02:35
-
راهاندازی یک پکیج اعتبارسنجی 06:49
-
افزودن اعتبارسنجی در بکاند API 03:30
-
تغییر جاوا اسکریپت فرانتاند 09:20
-
gRPC، SOA و موارد دیگر 02:24
مشخصات آموزش
آموزش ساخت وب اپلیکیشن با Go - سطح متوسط
- تاریخ به روز رسانی: 1404/06/21
- سطح دوره:متوسط
- تعداد درس:173
- مدت زمان :18:43:51
- حجم :4.76GB
- زبان:دوبله زبان فارسی
- دوره آموزشی:AI Academy