⁉️🌐 دنیای وب واقعا چطور کار میکنه؟
ما هرروز کلی عکس، فیلم، صدا، فایل و غیره برای هم ارسال میکنیم. هرروز به کلی وبسایت سر میزنیم و چیزای مختلفی میگیریم و میبینیم، اما همهی اینها چطور ممکن شده؟
✅ HTTP یا «HyperText transfer protocol» یک پروتکل در لایهی application، یعنی لایهی هفتم مدل OSI و لایهی چهارم مدل TCP/IP هست. بعدا این جمله رو بیشتر باز میکنیم قطعا، اما در حال حاضر صرفا اینکه بدونید یک پروتکل هست برای ادامه کفایت میکنه.
⁉️ سوالی اولی که پیش میاد اینه که اصلا چیکار میکنه؟ HTTP مثل یک پل ارتباطی بین دوتا دستگاهه که تو بستر وب کار میکنن، و بهشون این قابیلت رو میده که بهم دیگه عکس، صدا، فایل، ویدیو و ... ارسال کنن. اما چطور این کارو میکنه؟
⚜️ دوتا مفهوم هست که باید شدیدا بهشون توجه کنید: «Request» و «Response»
🌕 وقتی شما وارد مرورگر میشید و میزنید http://digikala.com ، درواقع مرورگر یک Request به سمت سرور های دیجیکالا ارسال میکنه، و بعد سرورهای دیجیکالا بعد از تحلیل درخواست شما و جمعآوری اطلاعات لازم برای پاسخ دادن به شما، یک Response متناسب براتون ارسال میکنن. این میشه کل فرایند کار و به عنوان «Request Cycle» میشناسیمش.
⁉️ حالا سوال: چطور مرورگر به سرور های دیجیکالا ( یا هر سرور دیگهای ) بفهمونه که چیکارش داره. شاید اصلا من داشتم مشخصات یک محصول رو ارسال میکردم تا توی سبد خریدم ذخیرش کنم، چجوری باید اینو بهش بگم؟ خب باید از Verb های HTTP استفاده کنم.
💎 چیزی که تو این مرحله نیاز میشه بدونید، «HTTP Verbs» هست. اول از همه باهم ببینیم که چی هستن:
GET, POST, PUT, PATCH, DELETE
- اما برای چی و چجوری ازشون استفاده میکنیم؟
GET: برای دریافت دیتا و اطلاعات یک آدرس یا URL. مثلا برای مشاهده صفحهی اصلیِ http://digikala.com یک درخواست از نوع GET ارسال میشه. اگر اطلاعات بیشتری راجب URL میخواید یا نمیدونید چیه هشتگ #URL کامل توضیحاتش هست.
POST: این متُد (اسم دیگهی وِرب) برای ارسال داده سمت سرور هست. فرض کنید تو مثال دیتابیس تو پستِ بالا من میخواستم اطلاعات یک یوزر جدید رو ثبت کنم. باید با استفاده از یک متد POST این کار رو میکردم. چرا؟ چون متد پست قابلیت حمل بار داره. اگر متد GET موتورسیکلت باشه متد POST کامیونه. و میتونه با خودش یه مقدار بار (که بهش میگیم Request Body) حمل کنه و مثلا همون name, age, lastName رو با مقادیرش بذاریم توش و بفرستیم سمت سرور.
⚠️ نکته: نه اینکه GET قابلیت داشتن Body نداشته باشه، اما ازش استفاده نمیشه چون خیلی از سرور ها از Bodyای که تو ریکوئست GET باشه صرفنظر میکنن و از نظر معنایی هم این کار معنی نمیده که شما با متد دریافت اطلاعات، بخوای اطلاعات بفرستی.
PATCH و PUT: جفتشون برای آپدیت کردن یک منبع در سرور به کار میرن. مثلا فرض کنید کاربر اومده ایمیل و شماره تلفنش رو وارد کرده. بعد متوجه شده شماره تلفنش اشتباه بوده و میره اون رو اصلاحش کنه. خب اینجا دیگه شما کاربر رو از قبل داری، فقط باید یه سری تغییرات رو بهش اعمال کنی. اگر کاربر رو نداشتیم دیتاش رو با متد POST باید میفرستادیم تا ساخته میشد.
DELETE: طبق موارد بالا کارکرد دلیت قابل حدسه. برای حذف یک منبع از سرور به کار میره.
⁉️ خب حالا HTTPS این وسط چیه؟ HTTPS نسخهای هستش که به وسیله گواهی TLS یا SSL اطلاعات ورودی به و خروجی از سرور رو رمزنگاری میکنه تا افرادی که بیرون موندن نتونن بفهمن اون دیتای اصلی چی بوده و امنیتش رو بیشتر میکنه؛ برای همین میگن اگه کار خرید، پرداخت، ثبت نام و ... داشتید همیشه حواستون باشه که بالا https باشه نه http.
هنوز خیلی چیزا مونده که راجب HTTP بگم و همچنین نکته های تستیِ ریزش و خب تو یه پست متنی واقعا سخته، موافق یه ویدیو برای این مبحث هستید؟ کل قضایایی از دنیای وب که نیازه بدونید رو براتون جمع میکنم. اگر آره تو نظرسنجی بالا شرکت کنید 👆🏻
ممنون بابت همراهیتون، ریکشن یادتون نره، پستا واقعا زمان و انرژی میبرن :))).
کنجکاو بمونید
#network #http #osi #tcpip #web #crossstack
🔗 @NimaCodez | © | Go Deep, Learn Deep, Ask Deep 🧠
ما هرروز کلی عکس، فیلم، صدا، فایل و غیره برای هم ارسال میکنیم. هرروز به کلی وبسایت سر میزنیم و چیزای مختلفی میگیریم و میبینیم، اما همهی اینها چطور ممکن شده؟
⁉️ سوالی اولی که پیش میاد اینه که اصلا چیکار میکنه؟ HTTP مثل یک پل ارتباطی بین دوتا دستگاهه که تو بستر وب کار میکنن، و بهشون این قابیلت رو میده که بهم دیگه عکس، صدا، فایل، ویدیو و ... ارسال کنن. اما چطور این کارو میکنه؟
⁉️ حالا سوال: چطور مرورگر به سرور های دیجیکالا ( یا هر سرور دیگهای ) بفهمونه که چیکارش داره. شاید اصلا من داشتم مشخصات یک محصول رو ارسال میکردم تا توی سبد خریدم ذخیرش کنم، چجوری باید اینو بهش بگم؟ خب باید از Verb های HTTP استفاده کنم.
GET, POST, PUT, PATCH, DELETE
- اما برای چی و چجوری ازشون استفاده میکنیم؟
GET: برای دریافت دیتا و اطلاعات یک آدرس یا URL. مثلا برای مشاهده صفحهی اصلیِ http://digikala.com یک درخواست از نوع GET ارسال میشه. اگر اطلاعات بیشتری راجب URL میخواید یا نمیدونید چیه هشتگ #URL کامل توضیحاتش هست.
POST: این متُد (اسم دیگهی وِرب) برای ارسال داده سمت سرور هست. فرض کنید تو مثال دیتابیس تو پستِ بالا من میخواستم اطلاعات یک یوزر جدید رو ثبت کنم. باید با استفاده از یک متد POST این کار رو میکردم. چرا؟ چون متد پست قابلیت حمل بار داره. اگر متد GET موتورسیکلت باشه متد POST کامیونه. و میتونه با خودش یه مقدار بار (که بهش میگیم Request Body) حمل کنه و مثلا همون name, age, lastName رو با مقادیرش بذاریم توش و بفرستیم سمت سرور.
PATCH و PUT: جفتشون برای آپدیت کردن یک منبع در سرور به کار میرن. مثلا فرض کنید کاربر اومده ایمیل و شماره تلفنش رو وارد کرده. بعد متوجه شده شماره تلفنش اشتباه بوده و میره اون رو اصلاحش کنه. خب اینجا دیگه شما کاربر رو از قبل داری، فقط باید یه سری تغییرات رو بهش اعمال کنی. اگر کاربر رو نداشتیم دیتاش رو با متد POST باید میفرستادیم تا ساخته میشد.
DELETE: طبق موارد بالا کارکرد دلیت قابل حدسه. برای حذف یک منبع از سرور به کار میره.
⁉️ خب حالا HTTPS این وسط چیه؟ HTTPS نسخهای هستش که به وسیله گواهی TLS یا SSL اطلاعات ورودی به و خروجی از سرور رو رمزنگاری میکنه تا افرادی که بیرون موندن نتونن بفهمن اون دیتای اصلی چی بوده و امنیتش رو بیشتر میکنه؛ برای همین میگن اگه کار خرید، پرداخت، ثبت نام و ... داشتید همیشه حواستون باشه که بالا https باشه نه http.
هنوز خیلی چیزا مونده که راجب HTTP بگم و همچنین نکته های تستیِ ریزش و خب تو یه پست متنی واقعا سخته، موافق یه ویدیو برای این مبحث هستید؟ کل قضایایی از دنیای وب که نیازه بدونید رو براتون جمع میکنم. اگر آره تو نظرسنجی بالا شرکت کنید 👆🏻
ممنون بابت همراهیتون، ریکشن یادتون نره، پستا واقعا زمان و انرژی میبرن :))).
کنجکاو بمونید
#network #http #osi #tcpip #web #crossstack
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥26👍11⚡4
⁉️ بکاند و فرانتاند چجوری باهم حرف میزنن؟
⁉️ اصلا اپلیکیشن موبایل چجوری با بکاند حرف میزنه؟
تو این پست با «API» آشنا میشم و همه اینارو جواب میدیم.
تو دنیای برنامهنویسی «API» همون منوی توی رستورانه. API ها یه فهرست از عملکردها و خدماتی هستن که یه بکاند میتونه ارائه بده و توضیح میده چجوری میشه ازش استفاده کرد.
«API» هارو حتی میشه یهجور دلال دیتا هم حساب کرد. چون درواقع واسطه میشن بین کاربر و جایی که پردازش واقعی داره انجام میشه. (مثل پیشخدمتی که سفارش شمارو به آشپزخونه میگه و شما خودتون نمیرید به آشپزخونه)
- بیاید براش یه مثال قابل لمس بزنیم:
۱- منو رو نگاه میکنید و غذارو انتخاب میکنید.
۲- به پیشخدمت میگید فلان غذارو رو میخواید.
۳- پیشخدمت سفارش شمارو به آشپزخونه میبره تا آشپز حاضرش کنه.
⁉️ تو هرکدوم از این مراحل چه اتفاقی میفته؟
1️⃣ مرحله اول: این مرحله داره فرانتاند رو توصیف میکنه، جایی که کاربر داره دکمه ها، اطلاعات، فرم ها و متن هارو میبینه.
2️⃣ مرحله دوم: اینجا پیشخدمت داره نقش API رو بازی میکنه. داره HTTP Request (سفارش) رو از فرانت اند (کاربر) میگیره و به بکاند (آشپزخونه) تحویل میده.
3️⃣ مرحله سوم: وقتی API این ریکوعست رو تحویل داد؛ بکاند هم با وصل شدن به دیتابیس و پیدا کردن اون دیتای مورد نظر و یه سری پردازش ها، دوباره جواب (غذا) رو میده به API (پیشخدمت) تا تحویل فرانتاند (مشتری/کاربر) بدتش.
✅ به عکس #2 نگاه کنید! «اصلا دلیل فلش دو طرفهای که بینشون کشیدم همینه». چون هر دوتاشون با اون پیشخدمت (API) سروکار دارن؛ نه خود آشپز مستقیم غذارو برای مشتری میبره، نه مشتری مستقیما میره آشپزخونه.
⁉️ ولی اصلا این API چه جنسیه؟ چه شکلیه؟
⚠️ اگه حس کردید مطالب این پست براتون ناآشناست؛ خوندن این سه تا پیام میتونه کمکتون کنه که این پست رو بهتر درک کنید.
- URL و درکل آدرس تو دنیای وب چی هست؟
- HTTP یعنی چی؟ و اصلا چی هست؟
- دیتابیس چیه؟
کنجکاو بمونید.
#API #crossstack #web #http
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥14👍4⚡2🆒2
⁉️ چه انواعی از API موجوده؟ الان باهم میفهمیم.
✅ شناخت انواع API به درک عمیقتر و دانش بیشتر شما کمک میکنه.
1️⃣ - REST API: یک استایل معماری برای توسعه اپلیکیشنهای تحت شبکه که از متدهای استاندارد HTTP (مثل GET, POST, PUT, DELETE) استفاده میکنه. فرمت داده معمولاً JSON هست. برای دسترسی به هر منبع یک URL مشخص وجود داره.
2️⃣ - GraphQL: برخلاف REST که هر منبع یک آدرس داره، GraphQL فقط یک آدرس داره و همه درخواستها به همون یه Endpoint ارسال میشن. GrapQL یه زبان کوئری هست که به کلاینت اجازه میده دقیقاً دادههای مورد نیازش رو درخواست کنه. از قابلیتهایی مثل بهروزرسانی لحظهای هم پشتیبانی میکنه، که برای اپلیکیشنهای وبسوکت ایدهآل هست.
3️⃣ - SOAP: یک پروتکل برای تبادل اطلاعات ساختاریافته بین وبسرویسها است. از XML استفاده میکنه و معمولاً روی بستر HTTP کار میکنه، اما میتونه با SMTP هم کار کنه.
4️⃣ - gRPC: یک فریمورک RPC (Remote Procedure Call) با پرفورمنس بالا که از پروتوکل بافر (Proto Buff) برای انتقال داده استفاده میکنه. برای میکروسرویسها خیلی مناسبه و از استریم دوطرفه (کلاینت به سرور و برعکس) پشتیبانی میکنه و برای سیستمهای Low-latency عالیه.
⁉️ حالا کدوم رو استفاده کنیم؟
✅ بستگی به نیاز شما داره. اگر API سادهای توسعه میدید، REST گزینه مناسبیه. اما اگر به انعطافپذیری بیشتری نیاز دارید، GraphQL انتخاب خوبی هست و برای میکروسرویسها و سیستمهای با تأخیر کم، gRPC بهترین گزینه است. این تصمیم به نیازسنجی دقیقی نیاز داره و به یادتون باشه که: «مجبور نیستید فقط یکی از اینها رو استفاده کنید.»
کنجکاو بمونید.
#gRPC #REST #graphql #soap #api #backend #crossstack
🔗 @NimaCodez | © | Go Deep, Learn Deep, Ask Deep 🧠
⁉️ حالا کدوم رو استفاده کنیم؟
✅ بستگی به نیاز شما داره. اگر API سادهای توسعه میدید، REST گزینه مناسبیه. اما اگر به انعطافپذیری بیشتری نیاز دارید، GraphQL انتخاب خوبی هست و برای میکروسرویسها و سیستمهای با تأخیر کم، gRPC بهترین گزینه است. این تصمیم به نیازسنجی دقیقی نیاز داره و به یادتون باشه که: «مجبور نیستید فقط یکی از اینها رو استفاده کنید.»
کنجکاو بمونید.
#gRPC #REST #graphql #soap #api #backend #crossstack
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥46⚡3🔥3👾3👍1