@codenight_ir
@codenight_ir
@codenight_ir
👇👇👇
GraphQL یه زبان کوئری برای APIهاست که توسط فیسبوک توسعه داده شده. ⚒
برخلاف REST که در اون هر endpoint یک منبع مشخص رو برمیگردونه، توی GraphQL تو میتونی دقیقاً مشخص کنی چه دادهای رو نیاز داری و سرور فقط همون داده رو برمیگردونه. ♻️
به زبون ساده تر توی REST API، هر endpoint معمولاً به یک منبع خاص اشاره میکنه و وقتی به اون آدرس درخواست میفرستی، یک ساختار دادهٔ ثابت برمیگرده. به عبارت دیگه، تو به عنوان فرانت دولوپر✌🏻 کنترل زیادی روی شکل و محتوای دادهای که دریافت میکنی نداری اگه به دادههای بیشتری یا کمتری نیاز داشته باشی، باید به endpointهای مختلفی درخواست بفرستی یا کل داده رو دریافت کنی و بخشهای اضافه رو نادیده بگیری.🤷🏻♀️🤷🏻
اما در GraphQL، تو میتونی دقیقاً مشخص کنی که چه فیلدها و دادههایی رو نیاز داری. به جای داشتن چندین endpoint، فقط یک endpoint مشترک وجود داره و تو با نوشتن یک کوئری مشخص میکنی که کدوم بخشهای داده رو میخوای.
برای مثال فرض کن یه سرویس کاربری داری:👇🏻👇🏻👇🏻👇🏻
در REST:
برای دریافت اطلاعات کاربر باید به /users/1 درخواست بزنی و ممکنه همه اطلاعات کاربر برگرده، مثل نام، ایمیل، آدرس، شماره تلفن و غیره، حتی اگه فقط به نام و ایمیل نیاز داشته باشی.
اگه بخوای پستهای کاربر رو هم بگیری، باید یک درخواست جدا به /users/1/posts بفرستی.
در GraphQL:
میتونی یک کوئری بنویسی که فقط نام و ایمیل کاربر رو برگردونه.🔥
همچنین میتونی در همون کوئری درخواست کنی که لیست پستهای کاربر رو هم برات بیاره.
{
user(id: 1) {
name
email
posts {
title
content
}
}
}نتیجه: سرور دقیقاً همون دادههایی رو برمیگردونه که درخواست کردی، نه بیشتر و نه کمتر.😎
👍🏻 مزایا graphql
1. دریافت داده دقیق
2. کاهش over-fetching و under-fetching
3. Documentation بهتر: اسکیمای GraphQL به طور اتوماتیک داکیومنت ایجاد میکنه که نشون میده چه دادههایی در API موجوده و کلاینت چطور میتونه بهشون دسترسی پیدا کنه.
4. یک endpoint برای همه درخواستها
👎🏻معایب:
1. پیچیدگی: اگه تازهکاری، ممکنه یادگیری GraphQL در ابتدا یه کم گیجکننده باشه، مخصوصا اگه به REST عادت کرده باشی.
2. کاهش سرعت در درخواستهای بزرگ: گاهی اوقات درخواستهای پیچیدهای که کلی داده از سرور میگیرن، میتونن بار سنگینی روی سرور بذارن و سرعت رو کاهش بدن.
3. عدم پشتیبانی از Caching بهصورت پیشفرض: بر خلاف REST که میتونی بهراحتی نتایج رو کش کنی، تو GraphQL باید بیشتر حواست باشه که چطور نتایج رو کش کنی تا درخواستها تکراری نشه و سرور زیر بار نره.
4. نیاز به تنظیمات و امنیت بیشتر: به دلیل اینکه GraphQL خیلی انعطافپذیره، باید حواست به مسائل امنیتی باشه و مطمئن بشی که کاربران به دادههایی که نباید دسترسی داشته باشن، دسترسی پیدا نمیکنن.
به طور کلی، انتخاب بین GraphQL و REST بستگی به نیازهای پروژهات داره. اگه انعطافپذیری و امکان تعریف دقیق دادهها مهمه، GraphQL میتونه انتخاب خوبی باشه، اما اگه سادگی و کارایی بیشتر مد نظرته، REST ممکنه مناسبتر باشه.
کانال آموزشی کدنایت :
@codenight_ir