از Pista Academy حمایت کنید
این اولین درس دوره است.
درس بعدی
21متخصص مهندسی داده و بیگ دیتا - جلسه 21
←مرور سریع مفاهیم اصلی پیش از تماشای کامل یا برای جمعبندی بعد از آموزش.
در جلسه 22 آموزش متخصص مهندسی داده و بیگ دیتا، مدرس به بررسی ساخت یک API برای مدیریت محصولات فروشگاه پرداخته است. این API شامل عملیات ایجاد، گرفتن، ویرایش، حذف و لیست کردن محصولات است. همچنین، به تعریف ساختار محصول و استفاده از اینام برای تعریف وضعیت محصولات اشاره شده است. در ادامه، فایلهای مربوط به پروتو، سرور و کلاینت ایجاد شده و به نصب و اجرا آنها پرداخته شد. در بخش بعدی، مدرس به بررسی فایلهای پروتو و نحوه اجرا و تست آن میپردازد. با اصلاح اشکالی مانند نامهای نادرست یا فایلهای غیابی، فایلهای پروتو به سرور ارسال شد و عملکرد آن تست شد. در نهایت، کلاینت اجرا شد و عملکرد سرویسهای پروتو با استفاده از دستورات مختلف بررسی گردید.
نکات کلیدی
ساخت API برای مدیریت محصولات فروشگاه شامل عملیات ایجاد، گرفتن، ویرایش، حذف و لیست کردن محصولات است.
استفاده از اینام برای تعریف وضعیت محصولات و ایجاد ساختار مناسب برای مدیریت اطلاعات محصولات.
بررسی و اصلاح فایلهای پروتو برای اجرا و تست.
تست عملکرد سرویسهای پروتو با استفاده از کلاینت.
متن ویدیو
متن زمانبندیشده این جلسه برای مرور، جستجو و دسترسی سریعتر.
سلام عرض میکنم خدمت دوستان عزیز. بریم سراغ
ادامه بحثمون. ما یه دونه آرپی سی ساده یه
ایپیآی خیلی ساده توی جلسه قبلی ساختیم.
بریم یه ذره اینو پیشرفته ترش بکنیم. یه
ایپیآی باحالتر درست بکنیم.
یه ایپیآی میخوایم درست کنیم برای مدیریت
محصولات یه فروشگاه
و احتمالاً مثلاً به این عملیا نیاز
داریم. مثلاً ساختن محصول، گرفتن محصول،
آپدیت کردن محصول، دیلیت کردن محصول و
لیست محصولات.
خب میگه فرض که سیستم فروشگاهی داریم هر
محصول شامل اطلاعات زیر میباشد. اسم و
دسکریپشن و قیمت و موجودی و کتگوری و
وضعیت.
میخوایم یه پروداکت سرویس درست بکنیم که
بتونه این عملیاتی که گفتم رو انجام بده و
کلاینت برای هر کدوم از اینا بخواد
ریکوستی ارسال بکنه.
میگه که چرا برای هر آرپی سی یک ریکوست
جدا میسازیم؟ ممکنه است در نگاه اول بگیم
که چرا خود پروداکت رو مستقیماً به تمام
متدها ندیم مثلاً یه همچین چیزی
از نظر فنی ممکنه اما معمولاً طراحی بهتر
اینه که
اینو بهش بدین
یعنی به در حقیقت خود محصولو بهش ندین
چون ممکن است بعدها اطلاعات جدیدی به
ریکوست اضافه بشه احتمالش
خب بریم فایلا رو بسازیم با همدیگه دونه دونه و اینو پیادهسازی بکنیم من وی اس
کدمو باز کنم
خب هدفم میگم وی اس کد منظورم وی اس کد
نیست منظورم خود ترمینال
بریم اول یه فایل درست بکنیم من بذارید
برم ببینم توی سی دی اسلش هوم
سی دی اسلش هوم اسلش تو هوم بریم ببینیم
چیا دارم
خب یه دونه دایرکتوری درست میکنم اینجا به اسم پروتو
سی دی میکنم داخل پروتو اینو بذار کلیک کنیم خب اول میریم سراغ
این فایل
با ویم کار میکنم من ویم پروداکت
پروکت.پروتو پروتو
میایم اینجا
اول میایم یه دونه اینو میذاریم میام مود اینسرت
بعدش میگه خود پروداکتو تعریف میکنید در قالب یک مسیج
فرض کنید هر محصول یک وضعیت داره یا اکتیوه یا اینکتیوه یا تموم شده بهتر است
به جای استیرینگ از اینام استفاده کنید
بچهها اینام یه مفهومیه تو بعضی از زبان
برنامه مثلاً مثل گو مثل راست فکر کنم هست
زمانی که شما میخواید یک آرایی از یه
چیزی تعریف بکنید احتمالاً
میاد اینجا یه دونه همچین چیزی درست
میکنه
یک اینامی درست کرده برای حالتهای مختلف میبینید
صفر حالتی که وضعیت مشخص نیست یک اکتیو دو
اینکتیو و سه هم یعنی که تموم شده حالا
میتونیم از این اینا بیایم داخل تعریف
خود محصولمون استفاده بکنیم میام اینجا
کجا میخوام عوضش پروداکت استاتوس
بعد از در حقیقت
کت کتگوری یه چیزی اضافه میکنیم به اسم
پروداکت
استاتوس اسم اینامو مینویسیم بعد استاتوسشو
مساوی میذاریم با هفت
یعنی تایپ این استاتوس پروداکت استاتوسه
اینا تایپشون مثلاً استرینگه این تایپش
پروداکت استاتوسه که اینجا تعریف کردیم
تایپشو
مزعیتش چیه مزعیت اینکه کاربر نمیتونه هر
مقداری اینجا تعریف بکنه
تعریف کریت پروداکت اینم تعریف کنیم
توی ساخت دیگه آیدی رو بچهها ما نمیدیم آیدی رو خودش درست میکنه به صورت خودکار
جنریت میشه
بقیه اطلاعاتم که اینجا گذاشتیم
گت پروداکت از اسمش مشخصه دیگه یه ریکوستیو دریافت میکنه اطلاعات این
محصولو به ما برمیگردونه طبیعتاً
احتمالاً با آیدی این کارو میکنه
این ریکوستمونه در جواب ریسپانسمونم میشه
این
بذار من آخر سر میام فایلو یه جا بنویسم فکر کنم بهتر باشه اینجوری خورد خورد خیلی
سخته کپی کردن
ولی دیلیت کردم طبیعتاً فقط آیدیشو
میخوایم یعنی آیدی محصولو داشته باشیم
راحت میتونیم دیلیت بکنیم برای ریسپانسشم
مثلاً میتونیم یه همچین چیزی یه دونه
ساکس مثلاً بهش بدیم فقط چون دیتایی قرار
نیست برای دیلیت ما برگردونیم وقتی ریکوست
دیلیت زده میشه در جواب چیزی برنمیگرده
صرفاً مثلاً یه تاییدیه یا عدم تأیید
آپدیت کمی پیچیده است داستان آپدیت میگه پس یه همچین پروداکتی داریم کاربر
میخواد فقط پرایسشو تغییر بده
یعنی اگه ریکوستو اینجوری بنویسیم
یه مشکلی داره از کجا بفهم کلاینت واقعاً
استاکو صفر کرده
یا اصلا استاک رو ارسال نکرده اینجا
آپشنال مهم میشه شود. آها
ابتدا از استفاده از آپشن میتونیم بنویسیم به این صورت بنویسیم آپشنال فلان
آپشنال آپشنال آپشنال آپشن آپشنال حالا
میتونم بفهمم یک فیل واقعاً ارسال شده یا
نه مثلاً کلاینت فقط پرایسو ارسال بکنه
سرور فقط پرایس رو تغییر میده حتی یعنی ما
توی ریکوست آپدیت میگیم آیدی اجباریه اما
اینا آپشنالن میتونه ارسال نکنه. بعد
سرور زمانی که فقط پرایسال بشه میفهمه که
بقیه رو نمیخواد دست بزنه. تغییر
نمیخواد بده.
مثلاً این و این در نتیجه آپدیت پاک کرد. اوکی
فرض کنید کنار بتواند پروداکتو با یکی از
این موارد جستجو کند
آیدیش یا اسکایو یا نیمش. نمیخوایم همه
هم زمان استفاده میتونیم بنویسیم
اگه یکی از این آیدنتیفایرا بود محصولو
مثلاً میتونه پیدا بکنه در حل از فقط
یکیشون فعالن
توی ارسال ریکوست لیست بچهها ما دیتایی قرار نیست ب ارسال بکنیم یعنی تو دیلیت ما
آیدی رو میفرستیم تو آپدیت آیدی و اون
اطلاعاتی که قراره آپدیت شه رو میفرستیم.
اما توی لیست ما تو ریکوستمون هیچ دیتایی
نیست چون لیستو میخوایم دیگه میخوایم
بگیم کلشو برگردون.
خب این فایل کاملشه. بذارید من این فایل کاملو یه بار یه جا
برش دارم. یه بار با هم چک کنیم. این پروداکت
استاتوسمونه که هیچی خود پروداکتمونه.
کریت پروداکتمونه که اطلاعاتی که برای
محصوله رو ارسال میکنه.
بعد در جواب هم محصولو برمیگردونه. گتم
آیدی میگیره محصولو برگردونه. اینم
ریسپانسشه.
آپدیتم که آیدی اجباری بقیهش اجباری نیست.
اینم جوابشه. دیلیتم فقط آیدی میخواد. در
جوابم یه دونه بولی هم برمیگردونه. لیستم
که هیچی نمیفرسته. در جواب لیست محصولات
میگیره و اینم پروداکت سرویسمونه.
من اینو کپی کنم
بیارم اینجا
د. دبلیو کی
خب
این از فایل کاملمون بریم ادامش.
حالا میایم اینجا گوش اصلیمون اینو اجرا
میکنیم که فایلای پایتونش جنریت بشه.
اینست خب
محیط مجازی اول درست کنم پایتون
سه
دش ام وچ انت اسمشم میذارم وچمنت همون اسم
خودشو میذارم
بعد باید اینو اکتیوش کنم با دستور سورس وی ای ان وی اسش بین اسلش اکتیوت
نشونهش چی اکتیو شده اینه بعد باید اون پکیجا که لازم دارمو اینستال بکنم بذار من
اینقدر یه جا اینو کپی کنم بیارم که سخته
خب رو این موت مجاز اینا رو نصب کن من چون
پروژه قبلیرو روی یه دونه دایرکتور دیگه
زده بودم من فکر میکردم رو همونم یه لحظه
خب ببینیم نصب شده یا نه
اینم نصب شده یه دونه پوشه جنریتد من درست
میکنم که خروجیا بره داخل اون قرار بگیره
حالا میره اون دستوره رو دوباره ران
میکنم
خب بذارید من اینو باید بیرون چیز اجرا کنم اجازه بدید
سی دی اینجا باید اجرا کنم
میگه جنریت اینجا نیست بذار برم داخل همون سی دی پروتو این دستورا رو بذار اصلاحش
کنم
میگیم که
همین جا
الان فکر کنم درست بشه من یه کلیر بزنم بیام بالای صفحه
الان میگم که این فایله رو چون همین مسیر استنتد همین
جاست
این اوکی بشه خب درست شد سی دی جنریتد یه
ال اس میزنم اینجا
د تا فایلم درست شده خیلی خب این از این د
تا فایل خواهیم داشت که بله داریم
بعد پیاده سازی پروداکت سرویس یک سرویس
سرور جدید میسازیم یم
بعد یه دونه فایل وین اس
سرور اس
پروداکت سرورپ
میام بیرون فعلاً به جای دیتابیس از دیکشنری استفاده
میکنیم
فرض میکنیم دیتابیسمون اینه
و نکست آیدی هم میشه سه چون یک و د رو استفاده کردیم نکست آیدی میشه س
چون قراره که در حقیقت ما زیاد این کارو انجام بدیم از پروداک اگه دیکشنریمون
بخوایم به پرو به پروتوداف برسیم پروتوباف
برسیم یه دونه فانکشن درست میکنیم هیپر
فانکشن درست میکنیم
تو سزیه گت پروداکت سزیز آپدیت همه رو داره عوض میکنه حالا
فایل نهاییشو میبینیم جلوتر سز دیلیت
پروداکت
اینجا میگه که اگر آیدی که به عنوان ورودی گرفتم تو لیست محصولات بود دیلیتش بکن و
ترو برگردون اگه نبود فارس برگردون الان
لیستم که
در حقیقت کلی لیستو برمیگردونه ورودیش
هیچی نیست
خب ما فایلایی که لازم داریمو یه الان بهش میگم کل فایلا رو بهمون بده
بعد بریم با همدیگه تستش بکنیم اجازه بم ب میگم کل فایل یه بار بهمون بده.
خب ببینید بچهها ساختار پروژهمون این شد.
ما یه دونه فایل پروتو پروداکت. پروتو
داریم که از این اومدیم د تا فایل جنریت
کردیم یه دونه سرور داریم یه دونه کلاینت
داریم و اینم ریکارمنتمونه.
بذارید من کلاینتمونم بسازم اینجا
خب امپا دییر کلاینت
الان اس دش الی بگیرم یه دونه کلاینت
داریم یه جنریتد اون فایل اصلیه و محیط
مجازمون سرورمون کوپست
سروررو احتمالاً اینجا دیگه ساختم من تو جنریتد بردم ساختم ای وای اشکال نداره
همینجا رو یه بار دیگه میسازم
این ساختار اصلی پروژههمونه فایل ریکوامنتمون که چیزایی که لازم داریم ولش
کنیم اصلاً میتونیم از درست کنیم ما
اشکال نداره
ولی نصبه حالا ما برای اطمینان این فایلا
رم من درست میکنم
با دستور تاچ
رکir
تیxtی
بعد با وین بازش میکنم.
تو نقطه دبلیو کیو بعد با این دستور میتونیم نصبش کنیم.
اگه نصب نیست
یه همچین فایلی نیست پس این جلو چشته دیگه.
چرا نمیتونم بازش کن همینجوری چشت. من اشتباه نوشتم نکن اسمشو.
آها ریکواارمنتسه من اسم اس اسم اس اسم اسشو نذاشتم
الان درست شد خب یه اس جا انداخته بودم
این از این بعد فایل پروتومونو که محتوای
کاملشو اینجا برمیداریم
این محتوای کاملشه میخوای یه بار با هم
چک بکنیم این که اینامونه این خود مسیج
پروداکتمونه کریت پروداکتمونه
این البته یه بار دیدیم با هم تغییری
نکرده آپدیتمونه و الی آخر خب بذارید من
اینو ببینیم درستش بکنیم وین
یه شورتکات داره برای اینکه کلشو یه جا پاک کنه من یادم رفته واقعیت خب میام به
مود اینسرت اینو کلاً پیست میکنم تو اکسپ
دبلی کیو خب چه فایلی دیگه داریم فایل
سرورمونه
ویم اسلش سرور اسلش پروداکت سرور
پروداکت
سرور.پی پیوا اشتباه ننویسم فقط
میام رو مود اینست این پیست میکنم
اینم ذخیره شد
میگه همچین چیزی نداریم
بذارید من یه لحظه سی کنم اسرش کن
چی دارم اینجا تو پروتو برم
این غلطه املای نوشتنه من خیلی دردسر
همیشه ما خب سروررو که داریم
چی داخلش داریم هیچی نداریم خب یه دونه بسازیم اینجا فایلشو بچهها
تاج سرور
پروداکت
سرور.پ
با
خب حالا میخوایم اینو تغییرش بدیم بذار سی بکنم داخل سرور
دست فیم
سرور میرم اینسرت اینو کپی میکنم
الان شد خب احتمالاً چیز غلط امضایی من نوشته بودم دفعه قبل بیایم پایین
فال کلاینتمون باز من یه چک بکنم سی دی بکنم داخل کلاینت اینجا چیزی که
نداریم نه فایل تاچ دستور تاچ
پروداکت
کلاپ
ویم بازش میکنم میم رو مود اینسترت اینو کپی
خب یه بار چک کنیم فور سرورمونم بچهها ضرر نداره
توی سرورمون یه دونه پروداکس داریم یه لیستی از
محصولات گذاشته د تا محصول اینجا فعلاً
گذاشته نکست آیدی م زده سه بعد این میاد
دیکشنریو تبدیل میکنه به پروتوباف پروداکت
به این روش آیدی رو اینجوری میاره داره
نیم اینجوری و الی آخر
بعد پروداکت سرویس داریم
برای کریت پروداکت از نکست آیدی استفاده
میکنه و بعد اینجا محصولو درست میکنه
پروداکتم که اینجوری میاره تو اون ریکوست
ورودیمون ما این اطلاعاتو دادیم
گت پروداکتم طبیعتاً یه آیدی به عنوان
ورودی دریافت میکنه
اون آیدیه رو میره داخل محصولات میگرده
آیدیه رو پیدا میکنه بعد محصولو
برمیگردونه.
آپدیتم باز ما آیدی رو دادیم به اضافه یه
دیتای دیگهای که باید آپدیت بشه.
دیلیتم فقط آیدی رو میگیریم. محصولو میریم میگردیم پیدا میکنیم دیلیت
میکنیم و لیستم که هیچ چیزی به عنوان
ورودی نداریم.
خب این از این
فایل کلاینتم که گذاشتم سر جاش
خب این تموم شد اینو که ساختیم اینو ساختیم اینم هیچی
اینم ساختیم با همدیگه
توی ال اس جنریت اگه بریم باید د تا فایلمون باشه
میگه چون فایلای جنریت داخل پوشه جدایی قرار دارند از پوشه اصلی پروژه رو اجرا
بکنید با این دستور
برای بررسیشم میتونین اکو بگیرین اینو اوکی باید اینو برگردونه درسته
بچهها من یه سوتی دادم این اکسپورتر باید اینو میذاشتم پروتو من
اشتباه گذاشتم این این برای پروژه
قبلیمونه پروتو جنریتد
الان درست شد اجرای سرور
میگه بریم داخل پروژهمون داخل پروژهمون هستیم اکتیوم هست نه اکتیو نیست اینو
اکتیوش کنید.
بعد اینو کپی میکنم میارم اینجا فقط این باید
آدرسش بشه پروتو
یا هر پوشهای که خودتون گذاشتید بعدم که سروررو ران میکنید
روی پورت ۵۰ هز۵۱ منتظر ریکوست میمونه حالا تو
ترمینال دوم میریم
اینجا ترمینال دوم میریم داخل سی اس هوم اسلش
پروتو
بعد اکتیو میکنم دوباره
بعد کلاینتو ران میکنم یه منویی بهم نشون میده میگم که مثلاً من
میخوام یه محصولیو دریافت بکنم دو رو
میزنم میگه آیدیشو بده آیدی محصول یکو
میدم بهش نگاه کنید اطلاعات محصول یکو بهم
برگردوند دوباره میتونم باهاش صحبت کنم
مثلاً بگم که
یه محصولیو میخوام دیلیت کنم ۴ میگه
آیدیشو بده میگم یکو دیلیت کن الان دیگه
یک دیلیت شد نگاه کنید الان من دوباره د
رو بزنم یکو بزنم میگه محصولی وجود نداره
چون آیدیشو پاک کردم
و بقیه تستارم میشه باهاش انجام داد اینم
از یه پروژه کامل بریم بیایم ادامهشو درس
بعدی صحبت کنیم فعلاً خداحافظ ‏S
پرسشهای رایج
پاسخ کوتاه و مستقیم به پرسشهایی که معمولاً هنگام یادگیری این موضوع مطرح میشوند.
API در این جلسه شامل عملیات ایجاد، گرفتن، ویرایش، حذف و لیست کردن محصولات است.
ساختار محصول با استفاده از اینام تعریف شده است تا وضعیت محصولات به درستی نمایش داده شود.
اشکالی مانند نامهای نادرست یا فایلهای غیابی در فایلهای پروتو به وجود آمده است که در نهایت اصلاح شد.
عملکرد سرویسهای پروتو با استفاده از کلاینت و دستورات مختلف مانند گت، کریت، آپدیت و دیلیت تست شد.
آخرین بهروزرسانی محتوای متنی:
🎓 دوره جامع «متخصص مهندسی داده و بیگ دیتا» | Pista Academy در دنیای امروز، حجم عظیمی از دادهها هر روز توسط سازمانها، کسبوکارها و سرویسهای آنلاین تولید میشود؛ اما داده زمانی ارزشمند است که بتوانیم آن را بهدرستی جمعآوری، ذخیره، پردازش و مدیریت کنیم. در دوره «متخصص مهندسی داده و بیگ دیتا» در Pista Academy، قدمبهقدم با مفاهیم، ابزارها و تکنولوژیهای مهم حوزه Data Engineering و Big Data آشنا میشویم و تلاش میکنیم مسیر یادگیری را از مفاهیم پایه تا ابزارهای حرفهای این حوزه طی کنیم. 📚 در این دوره با موضوعاتی مانند موارد زیر آشنا خواهید شد: 🔹 Linux Server و ابزارهای موردنیاز مهندسی داده 🔹 Python و Java برای کار با ابزارهای Data Engineering 🔹 مفاهیم دادههای توزیعشده و پایگاه داده 🔹 پایگاه دادههای رابطهای و SQL 🔹 پایگاه دادههای NoSQL 🔹 مفاهیم Big Data 🔹 اکوسیستم Hadoop 🔹 کار با ابزارهای Hadoop و مثالهای کاربردی 🔹 Apache Spark و پردازش دادههای حجیم 🔹 کار عملی با ابزارهای Spark 🔹 Kubernetes 🔹 خودکارسازی و مدیریت فرایندهای انتشار در مهندسی داده 🎯 این دوره برای چه کسانی مناسب است؟ اگر قصد دارید وارد حوزه مهندسی داده شوید، دانش خود را در زمینه Big Data گسترش دهید یا با ابزارهایی مانند Hadoop، Spark، SQL، NoSQL و Kubernetes بهصورت جدیتر آشنا شوید، این دوره میتواند مسیر مناسبی برای شروع و توسعه مهارتهای شما باشد. در طول دوره تلاش میکنیم مفاهیم را به زبان ساده و کاربردی بررسی کنیم و در کنار مباحث تئوری، با ابزارها و سناریوهای واقعی نیز آشنا شویم. ━━━━━━━━━━━━━━━━━━ 📌 نام دوره: متخصص مهندسی داده و بیگ دیتا 🏫 Pista Academy آموزش تخصصی، ساده و کاربردی اگر این آموزش برای شما مفید بود، با 👍 لایک کردن ویدیو و Subscribe کردن کانال Pista Academy از ادامه تولید آموزشهای تخصصی حمایت کنید. همچنین اگر درباره مباحث دوره سؤال یا پیشنهادی دارید، در بخش نظرات مطرح کنید. 👇 #مهندسی_داده #بیگ_دیتا #DataEngineering #BigData #Python #SQL #NoSQL #Hadoop #Spark #Kubernetes #PistaAcademy