برنامه‌نویسی

گراف کیوال (GraphQL) چیست؟


۲۷ فروردین ۱۴۰۱
گراف کیوال (GraphQL) چیست؟

گراف کیوال (GraphQL) را می‌توان یک query language برای API و یک runtime برای انجام کوئری‌ها بر اساس داده‌های موجود دانست که به‌کمک آن می‌توانید فقط داده‌های مورد نیازتان را درخواست کنید و داده‌های اضافی در پاسخ کوئری شما ارسال نخواهند شد.

GraphQL به‌گونه‌ای طراحی شده تا APIها سریع‌تر و انعطاف‌پذیرتر باشند، در نتیجه می‌توان گفت که GraphQL تجربه‌ی بهتری از توسعه و کار با API را برای توسعه‌دهندگان فراهم کرده است. همچنین شما به‌عنوان یک توسعه‌دهنده می‌توانید داده‌های موردنیازتان را در یک API Call از منابع مختلفی دریافت کنید که این یکی دیگر از قابلیت‌های جالبی است که GraphQL به‌عنوان رقیب و جایگزین REST ارائه کرده است.

بیشتر بخوانید: مقایسه GraphQL و REST

تاریخچه گراف کیوال (GraphQL)

GraphQL توسط فیسبوک توسعه داده شد و این شرکت اولین بار در سال ۲۰۱۲ در نرم‌افزارهای موبایل از این تکنولوژی استفاده کرد. چند سال بعد GraphQL در سال ۲۰۱۵ به‌صورت متن‌باز ارائه شد و امروزه GraphQL Foundation نظارت بر این تکنولوژی را برعهده دارد. درکنار GraphQL، پروژه‌های متن‌باز دیگری وجود دارند که کار با این تکنولوژی را برای شما ساده‌تر می‌کنند:

  1. Apollo: یک پلتفرم مبتنی‌بر GraphQL که به یکپارچه‌سازی خدمات و برنامه‌های شما کمک می‌کند.
  2. Offix: یک دیتابیس client-side مبتنی‌بر GraphQL است که امکان اجرای کوئری‌ها در حالت آفلاین را فراهم می‌کند.
  3. Graphback: یک نرم‌افزار کامندلاینی که Node.js serverهای مبتنی‌بر GraphQL را برای شما ایجاد می‌کند.
  4. OpenAPI-to-GraphQL: یک رابط خط فرمان و کتابخانه برای تبدیل OAS (Open API Specifications) به GraphQL است.

بیشتر بخوانید: تفاوت کتاب‌خانه (library) و فریم‌ورک (framework) در چیست؟

مزایا و معایب گراف کیوال (GraphQL)

مطمئنا هر تکنولوژی مزایا و معایب به‌خصوصی دارد که شما باید قبل از استفاده از آن تکنولوژی در سازمان خود، به آن‌ها آگاه باشید.

مزایا

  1. تعداد زیادی افزونه‌ی متن‌باز GraphQL وجود دارد که قابلیت‌های مختلفی را به شما ارائه می‌دهند.
  2. نوع هر داده از قبل تعریف شده و به این شکل از به‌وجود آمدن بسیاری مشکل‌ها جلوگیری می‌شود.
  3. لیست data typeهای موجود را می‌توان در سمت کلاینت دریافت کرد و این قابلیت در ایجاد خودکار مستندات بسیار کاربری است.
  4. استفاده از GraphQL شما را به پیروی از معماری به‌خصوصی اجبار نمی‌کند.
  5. فقط داده‌های درخواست شده در پاسخ به کاربر ارسال می‌شود.

معایب

  1. ممکن است یادگیری این تکنولوژی زمان‌بر و کمی پیچیده باشد.
  2. براساس نحوه‌ی پیاده‌سازی GraphQL ممکن است به استراتژی‌های متفاوتی نسبت به REST برای مدیریت APIها نیاز داشته باشید.
  3. پیاده‌سازی Caching در GraphQL پیچیده‌تر از REST است.
  4. توسعه‌دهندگان API باید کارهای بیشتری را برای نوشتن GraphQL schema قابل نگهداری در بلندمدت انجام بدهند.
  5. اکثر کارهای هر data query در سرور انجام می‌شود که این مورد کار توسعه‌دهندگان سمت سرور را پیچیده‌تر می‌کند.

منبع: https://www.redhat.com/en/topics/api/what-is-graphql