NimaCodez | خفنیجات با نیما
519 subscribers
39 photos
3 videos
27 links
مسئله های یک دولوپر کنجکاو و نیمچه Geek.

Go Deep, Learn Deep, Ask Deep.

A nerd without *shiny* grades.
Download Telegram
🔥 ستون اصلی نرم‌افزار های روز دنیا چیه؟
⁉️ بک‌اند و فرانت‌اند چجوری باهم حرف میزنن؟
⁉️ اصلا اپلیکیشن موبایل چجوری با بک‌اند حرف میزنه؟

تو این پست با «API» آشنا میشم و همه اینارو جواب میدیم.

تو یه رستوران، منو یه فهرستی از غذاهاست که میتونید سفارش بدید. منو بهتون میگه که چه غذاهایی موجودن و چطوری میتونید سفارششون بدید.
تو دنیای برنامه‌نویسی «‏API» همون منوی توی رستورانه. API ها یه فهرست از عملکردها و خدماتی هستن که یه بک‌اند میتونه ارائه بده و توضیح میده چجوری میشه ازش استفاده کرد.

‏«API» هارو حتی میشه یه‌جور دلال دیتا هم حساب کرد. چون درواقع واسطه میشن بین کاربر و جایی که پردازش واقعی داره انجام میشه. (مثل پیش‌خدمتی که سفارش شمارو به آشپزخونه میگه و شما خودتون نمیرید به آشپزخونه)

- بیاید براش یه مثال قابل لمس بزنیم:
۱- منو رو نگاه میکنید و غذارو انتخاب میکنید.
۲- به پیش‌خدمت میگید فلان غذارو رو میخواید.
۳- پیش‌خدمت سفارش شمارو به آشپزخونه میبره تا آشپز حاضرش کنه.

⁉️ تو هرکدوم از این مراحل چه اتفاقی میفته؟

1️⃣ مرحله اول: این مرحله داره فرانت‌اند رو توصیف میکنه، جایی که کاربر داره دکمه ها، اطلاعات، فرم ها و متن هارو میبینه.

2️⃣ مرحله دوم: اینجا پیش‌خدمت داره نقش API رو بازی میکنه. داره HTTP Request (سفارش) رو از فرانت اند (کاربر) میگیره و به بک‌اند (آشپزخونه) تحویل میده.

3️⃣ مرحله سوم: وقتی API این ریکوعست رو تحویل داد؛ بک‌اند هم با وصل شدن به دیتابیس و پیدا کردن اون دیتای مورد نظر و یه سری پردازش ها، دوباره جواب (غذا) رو میده به API (پیش‌خدمت) تا تحویل فرانت‌اند (مشتری/کاربر) بدتش.

به عکس #2 نگاه کنید! «اصلا دلیل فلش دو طرفه‌ای که بینشون کشیدم همینه». چون هر دوتاشون با اون پیش‌خدمت (API) سروکار دارن؛ نه خود آشپز مستقیم غذارو برای مشتری میبره،‌ نه مشتری مستقیما میره آشپزخونه.

⁉️ ولی اصلا این API چه جنسیه؟ چه شکلیه؟

تعدادی HTTP Endpoint هستن که وقتی بهشون ریکوعست زده میشه، فانکشن خاصی رو تو بک‌اند اجرا میکنن.

⭐️ تقریبا کل قضیه Backend Development راجب همین ساخت API هاست. پس درک مفهومش برامون خیلی مهمه.

⚠️ اگه حس کردید مطالب این پست براتون ناآشناست؛ خوندن این سه تا پیام میتونه کمکتون کنه که این پست رو بهتر درک کنید.

‌‏- URL و درکل آدرس تو دنیای وب چی هست؟
‏- HTTP یعنی چی؟ و اصلا چی هست؟
- دیتابیس چیه؟

کنجکاو بمونید.
#API #crossstack #web #http

🔗 @NimaCodez | © | Go Deep, Learn Deep, Ask Deep 🧠
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥14👍42🆒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 🧠
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥463🔥3👾3👍1
🔥 ۷ تا ترفند برای داشتن API Endpoint های تمیز و خفنی که هرکی دید کف کنه تو خوندن این پسته!

نوشتن API هایی که نگهداریشون آسون باشه و خوانایی خوبی داشته باشن از توانایی های اصلی هر توسعه دهنده‌ی بک‌اندیه؛ پس بریم یادش بگیریم.

نکته: منظور از resource در ادامه؛ اون شیوه‌ی اصلی و اولیه نمایش یک منبع هست.

1️⃣- کالشکن یا تک عضو؟
فرض کنید میخوایم سفارشات یک کافی‌شاپ رو از API دریافت کنیم، این URL باید کل سفارشات رو بده:
https://ye-chizi.com/orders


و این یکی باید یکیشون رو برگردونه:
https://ye-chizi.com/orders/{orderID}


2️⃣- کالشکن ها و زیر مجموعه هاشون!:
هر کاربری میتونه سفارشاتی داشته باشه. از اونجایی که این سفارش ها هستن که مال کاربر هان نه برعکس؛ پس URL درستی که همه‌ی سفارشات یک کاربر رو بده این خواهد بود:
https://ye-chizi.com/users/{userID}/orders


و URLای که فقط یک سفارش یه کاربر رو برگردونه اینطور میشه:
https://ye-chizi.com/users/{userID}/oders/{orderID}


3️⃣- استفاده از اسم ها؛ به‌جای فعل ها: فرض کنید بخوایم تمام یوزرهای دیتابیس رو در پنل ادمین نشون بدیم؛ URL درستش به این صورت میشه:
https://ye-chizi.com/admin/get-users
https://ye-chizi.com/admin/users


4️⃣- برای ایجاد سلسله مراتب از Forward Slash استفاده کنید! مثالش همون مثال مورد دوم هست.

5️⃣- از خط تیره برای جدا کردن کلمات استفاده کنید:‌
https://ye-chizi.com/reports/remotejobs
https://ye-chizi.com/reports/remote-jobs


6️⃣- اسم فانکشن های CRUD رو تو URL نیارید:
چیزی که تایین میکنه این ریسورس قراره خونده بشه، چیزی براش ارسال بشه یا دلیت بشه؛ اون HTTP Methodی هست که درخواست باهاش ارسال شده.
GET @ https://ye-chizi.com/orders => Get orders
POST @ https://ye-chizi.com/orders => Create a new order
DELETE @ https://ye-chizi.com/orders/{orderID} => Delete an order


7️⃣- فیلتر و مرتب سازی بر اساس کوئری:
برای سرچ تو یه ریسورس خاص و مرتب سازیش نیاز نیست API های جدایی بزنید. تو همون API از طریق کوئری دیتای مورد نیاز کارتون رو دریافت کنید!
https://ye-chizi.com/hotels?state=gilan&days=3

کنجکاو بمونید.
#api #rest #conventions #backend

🔗 @NimaCodez | © | Go Deep, Learn Deep, Ask Deep 🧠
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥192👍1🔥1🤝1