GraphQL سه نوع عملیات اصلی را تعریف میکند که هرکدام برای هدفی مشخص طراحی شدهاند. درک دقیق این مفاهیم پایهای برای طراحی و استفاده مؤثر از APIهای مبتنی بر GraphQL است.
۱. Query – دریافت داده
Query معادل عملیات GET در REST است. این عملیات برای خواندن و واکشی اطلاعات از سرور استفاده میشود. برخلاف REST که مسیرهای مختلف برای دریافت دادهها دارد، در GraphQL فقط از یک مسیر (معمولاً /graphql
) استفاده میشود و ساختار دادههای درخواستی در بدنهٔ پرسوجو مشخص میشود.
مثال کاربردی:
در یک اپلیکیشن کتابفروشی، برای نمایش صفحه محصول، میتوان یک Query تعریف کرد که نام کتاب، نویسنده، قیمت و امتیاز کاربران را فقط با یک درخواست دریافت کند.
ویژگی مهم:
در Query شما دقیقاً تعیین میکنید چه فیلدهایی نیاز دارید. اگر فقط نام و قیمت کتاب را بخواهید، نیازی نیست اطلاعات اضافی مانند موجودی یا توضیحات را دریافت کنید.
۲. Mutation – تغییر یا ایجاد داده
Mutation برای انجام عملیاتهایی است که داده را تغییر میدهند؛ مانند ایجاد، بهروزرسانی یا حذف. در REST معادل POST، PUT، DELETE و PATCH محسوب میشود.
مثال کاربردی:
در همان اپلیکیشن کتابفروشی، وقتی کاربر یک نظر ارسال میکند، از Mutation برای افزودن آن نظر استفاده میشود. یا وقتی سبد خرید را تغییر میدهد، از Mutation برای ویرایش سفارش استفاده میشود.
ویژگی مهم:
در Mutation میتوان تعیین کرد که بعد از انجام تغییر، چه دادههایی باید بهعنوان پاسخ بازگردانده شوند. مثلاً پس از افزودن نظر، میتوان شناسه و زمان ثبت آن را نیز در پاسخ گرفت.
۳. Subscription – دریافت دادههای بلادرنگ (Real-time)
Subscription برای دریافت بلادرنگ اطلاعات جدید از سرور به کلاینت استفاده میشود. این ویژگی زمانی مفید است که نیاز به بهروزرسانی لحظهای داشته باشید، بدون اینکه کاربر صفحه را رفرش کند یا درخواست جدید ارسال شود. این مکانیزم معمولاً از WebSocket بهجای HTTP استفاده میکند.
مثال کاربردی:
در یک اپلیکیشن چت، با استفاده از Subscription میتوان پیامهای جدید را بلافاصله پس از ارسال از سوی کاربر دیگر دریافت و نمایش داد. یا در اپلیکیشن معاملات بورس، تغییر قیمتها میتواند بهصورت لحظهای در صفحه نمایش داده شود.
ویژگی مهم:
Subscription نیاز به پشتیبانی سمت کلاینت و سرور دارد و در پروژههایی که زمان واقعی (real-time) اهمیت دارد، مزیتی کلیدی به حساب میآید.
جمعبندی
-
Query
: برای واکشی دادهها -
Mutation
: برای تغییر، ایجاد یا حذف دادهها -
Subscription
: برای دریافت لحظهای تغییرات از سرور
این سه مفهوم، ستونهای اصلی GraphQL هستند و شناخت دقیق آنها کمک میکند تا طراحی API ساختاریافته، انعطافپذیر و کارآمدی داشته باشید.