💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۳ سیدعلی میرعربشاهی
سبد خرید در API
محمدرسول اصغری حل شده توسط محمدرسول اصغری

سلام وقت بخیر، خسته نباشید

من الان برای نوشتن یک API برای ایجاد سبد خرید دارم از این فرمت و سشن استفاده میکنم اما در روت‌های api دسترسی به سشن ندارم و نمیتونم از سشن چیزی بخونم و کلا آرایه خالی برام برمیگردونه،مشکل از چیه راهنمایی میکنین؟

 

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

 

درود آقای میر عربشاهی 

بله درسته api‌ها به خاطر stateless بودنشون امکان اینکه بتونید از session استفاده کنید نیست و حتما توی هر درخواستتون به api باید تمام دیتای مورد نیاز تون ارسال بشه

 

من برای این چالش تون ۳ تا راه حل میگم از هر کدوم که مدنظرتون بود برحسب شرایط پروژه تون ازش استفاده کنید.

 

۱) استفاده از Cache Storage:  سیستم‌های کش مثل Redis یک روش خیلی سریع برای ذخیره‌ داده‌های سبد خرید هر کاربر هست.یعنی شما می‌توانید برای هر کاربرتون یک کلید یونیک براساس توکنش در نظر بگیرید و اطلاعات سبد خرید رو داخل Redis ذخیره کنید.

۲)Database Storage: میتونید سبد خرید کاربراتون رو در پایگاه داده ذخیره کنید. مثلا برای هر کاربر یک سبد خرید در پایگاه داده  بسازید و محصولاتی که کاربر انتخاب میکنه رو  توی این جدول ذخیره کنید. هر بار که کاربر درخواستی به سرور می‌زنه و محصولی رو انتخاب میکنه، می‌توانید از طریق توکنش، سبد خریدش رو از دیتابیس بگیرید و عملیات ای که میخواهید رو روش انجام بدید .

۳)ذخیره‌سازی اطلاعات سبد  خرید در local storage (FrontEnd):شما این رو میتونی سمت فرانت انجام بدی یعنی وقتی کاربر محصولی  رو به  به سبد خرید اضافه میکنه و شما بیای و  این دیتا تون رو توی Local Storage ذخیره می‌شوند. این کار رو به راحتی با JavaScript میتونید به شکل زیر انجام بدید .

localStorage.setItem()

 

موفق باشید

محمدرسول اصغری ۱۲ اردیبهشت ۱۴۰۳، ۱۵:۳۹

سلام وقت بخیر

ممنون بابت راه حل‌های پیشنهادی

 

من الان موقتا برای اینکه به سشن دسترسی داشته باشم تو قسمت روت میدلور ها،StartSession , EncryptCookies  رو قرار دادم،و الان به سشن‌ها دسترسی دارم تو api.

این کار به نظرتون اشتباهه؟

و اینکه چون از sanctum برای لاگین رجیستر استفاده میکنیم ممکنه بعدا مشکلی به وجود بیاره چون سشن رو داخل api استارت کردیم؟!

سیدعلی میرعربشاهی ۱۲ اردیبهشت ۱۴۰۳، ۱۷:۲۷

خواهش میکنم 

ترجیحا سعی کنید از این روش استفاده نکنید 

چون همونطور که گفتم api‌ها stateless هستند و این مورد در تضاد هستش 

همچنین توی این مورد باید توجه خاصی هم به امنیت بکنید

بابت sanctum هم بستگی به نوع بیزینس خود پروژه تون و scale اون داره ولی بحث امنیتی اش رو حواستون باشه که مشکلی پیش نیاد برای دیتای داخل session 

 

موفق باشید

بهترین پاسخ
محمدرسول اصغری ۱۲ اردیبهشت ۱۴۰۳، ۱۸:۱۷