آشنایی با گراف کیوال (GraphQl) برای توسعه API ها

آشنایی با گراف کیوال (GraphQl) برای توسعه API ها
تاریخ بروزرسانی : 16 مرداد 1399 | تعداد بازدید : 5929 | زمان خواندن مقاله : 5دقیقه
پیرامون برنامه نویسی،

این که تا الان اسم گراف کیوال (GraphQl) به گوشتان خورده یا نه مهم نیست! چیزی که مهم است این است که ما قصد داریم با این مقاله کاملی که برایتان ارائه می‌دهیم شمارا به صورت جامع با مفهوم، ویژگی‌ها و مزیت‌هایGraphQl  آشنا کنیم. همینطور می ‌توانید با استفاده از این تکنولوژی که یک زبان کوئری نویسی (query language ) محسوب می‌شود APIهای قابله توسعه‌تر و قدرتمند ‌تری را نسبت به گذشته به وجود آورید.

با استفاده از GraphQl روند توسعه پروژه‌هایتان برایتان راحت و کارآمدتر می‌شود و خبر عالی که اینجا می‌توان داد این است که شما می‌توانید گراف کیوال (GraphQl) را در تمام زبان‌ها و فریم‌ورک‌ها مورد استفاده قرار دهید و با استفاده از آن در زبان مورد نظر API خود را ایجاد کنید. بنابراین شما به هیچ عنوان محدود به زبان خاصی نیستید و با یادگیری گراف کیوال می‌توانید در زبان مورد نظر خود از آن استفاده کنید.

 

گذری بر گراف‌کیوال (GraphQl):

همانطور که به آن اشاره شد GraphQl ساختار جدیدی است که برای توسعه API ها مورد استفاده قرار می‌گیرد و جایگزین مناسبی برای API‌هایی است که باREST  توسعه داده می‌شدند.

این ساختار در سال 2012 توسط facebook  فقط به منظور رفع نواقص داخلی برنامه‌های موبایلی ارائه داده شد و پس از آن در سال 2015 به صورت open source  در اختیار جامعه برنامه‌نویسان قرار گرفت. گراف‌‌کیو‌ال  به دلیل دارا بودن یک ساختار کارآمد به سرعت به یکی از پر طرفدار‌ترین و محبوب‌‌ترین روش‌های موجود برای توسعه زیر ساخت‌های نرم افزاری تبدیل گردید.

 GraphQl در واقع با ساختار خاص خود و توسط زبان کوئری‌نویسی این امکان را فراهم می‌کند تا client دقیقا آن چیزی را که نیاز دارد از server درخواست کند و همینطور server  در پاسخ به guery  کلاینت پاسخ مناسب را به صورت JSON ارسال می‌کند و این به این منظور است که کلاینت دقیقا همان چیزی که نیاز دارد را درخواست می‌کند و فقط همان را در پاسخ دریافت میکند.

 

APIچیست؟

API مخفف کلمات(Application Programming Interface)  است و به معنی رابط برنامه‌نویسی نرم‌افزار می‌باشد. به صورت کلی API  همانند UI است با این تفاوت که به جای انسان، یک سیستم کامپیوتری قرار است با آن در تعامل باشد. در واقع می‌توان گفت API فصل مشترکی ما بین دو نرم افزار یا اپلیکیشن است.

دیتاهایی که از طریق API مبادله می‌شود ساختار یافته است به این صورت که در خواست از طرف نرم‌افزار B در چارچوب یک فرمت استاندارد صورت می‌گیرد که از قبل توسط توسعه‌دهندگان نرم افزار A تعریف شده است.

در نظر داشته باشید که نتیجه تعامل با API قابل پیش بینی است یعنی در خواست‌هایی که برای نرم افزار A ارسال می‌شوند باید در یک چارچوب خاصی باشند و از همین روی پاسخ به چنین درخواست‌هایی همواره مشخص و قابل پیش بینی است.

 

انواع API:

  • ای‌پی‌آی سخت‌افزاری
  • ای‌پی‌آی سیستم‌ عاملی
  • ای‌پی‌آی برنامه‌نویسی
  • کیت‌های توسعه نرم‌افزار
  • ای‌پی‌ای تحت وب (وب سرویس)

 

چرا GraphQl:

وقتی ساختار یا روشی برای توسعه پروژه ارائه می‌شود پیش از هرچیزی باید دلایل انتخاب آن را بدانید، پس با هم پیش برویم تا بفهمیم که چرا باید از GraphQl برای توسعه API هایمان استفاده کنیم.

  • ایجاد یک تجربه بی نظیر برای توسعه دهنده:

GraphQl در مقایسه با دیگر توسعه دهندگان مانند REST از مزیت‌های بسیاری برخوردار است و می‌توان گفت API هایی که با گراف کیوال (GraphQl) توسعه داده شده‌اند توسعه دهنده‌ (frontend) با کمترین چالش روبرو می‌شود و کلاینت می‌تواند با توجه به داده ‌های موجود آنچه را که می‌خواهد دریافت کند.

  • دارای عملکرد مستقل تیم‌های توسعه‌دهنده:

وقتی شما با API هایی کار می‌کنید که توسط GraphQl توسعه داده شده‌اند در این صورت به راحتی چندین تیم درگیر در پروژه به صورت هماهنگ و همزمان با یکدیگر کار می‌کنند.

Api ها در گذشته و توسط توسعه دهنده‌های دیگربه صورتی بود که به دلیل نداشتن عملکرد مستقل تیم‌ها و با ورژن بندی‌‌های مختلف APIها ، پروژه‌ها در زمان مورد نظر به اتمام نمی‌رسید و شرایط پیچیده‌ای را رقم میزد که باعث ایجاد مشکلاتی می‌شد اما توسط GraphQl تمامی این مشکلات برطرف می‌شود و تیم‌های توسعه‌دهنده frontend و backend می‌‌توانند به صورت همزمان روند توسعه را طی کنند.

  • رهایی از ورژن‌بندی API  توسط گراف کیو ال

اگر شما تا به حال یک وب سرور را توسعه داده باشید متوجه این مشکل خواهید شد که در آن برای آپدیت یک api  جدید با اطلاعات جدید فراهم کنید در صورتی که باید api قدیمی را هم نگه دارید.

این مشکل باعث بالا رفتن حجم کدهای شما و مصرف زیاد از منابع سرور شما خواهد شد و ممکن است که در مواقعی api ساخته شده برای موبایل با وب متفاوت باشد، که این موجب به وجود آمدن endpoint های مختلف می‌شود، ولی توسط گراف ‌کیو‌ال (GraphQL) شما فقط یک endpoint خواهید داشت که پاسخگوی تمامی این نیازها است.

علاوه بر آن آپدیت‌های شما را هم انجام می‌دهد بدون این که نیاز به تغییر api باشد، در عین حال که به متدهای قبلی هم پاسخگو است. با توجه به این که دنیای وب روز به روز رو به پیشرفت است و همچنین نیاز روز افزون به api‌ها از وب سرور‌ها و همچنین گسترس اپ های دستگاه‌ها، نیاز بیشتری بهapi  وجود دارد.

در همین راستا دیگر API‌‌‌‌‌‌‌‌های توسعه داده شده با گراف کیوال بدون تغییر در نسخه آن تکامل می‌یابند و توسعه‌دهندگان بدون هیچ گونه دغدغه‌ای کار خود را ادامه می‌دهند، همچنین قابل ذکر است که GraphQl سطحی از انعطاف پذیری را ارائه می‌دهد که هیچ توسعه دهنده‌ای نظیر آن را در سایر ساختار‌های توسعه API ندیده است.

  • ساختار Query ‌نویسی GraphQl:

گراف کیوال به هیچ پایگاه داده یا موتور ذخیره‌سازی خاصی متصل نیست و توسط کد و داده‌های موجود پشتیبانی می‌‌شود. یک سرویس GraphQl  برای هر عملکردی یک فیلد مخصوص به آن را در نظر می‌گیرد و سپس عملکر‌ها را برای هر فیلد مشخص می‌کند. به عنوان مثال یک سرویسGraphQl  به ما می‌گوید که کاربری به سیستم "من" ورود کرد و همچنین نام آن کاربر هم ممکن است چیزی شبیه به این باشد:

قطعه کد شماره 1 - گراف کیو ال نویسی

 

همراه با وظایف برای هر قسمت در هر نوع:

قطعه کد شماره 2 - گراف کیو ال نویسی

 

هنگامی که یک سرویس GraphQl در حال اجرا است (به طور معمول با URL در یک سرویس وب)، می‌تواند برای تأیید داده‌های GraphQl را ارسال کند. پرس و جوی دریافت شده ابتدا بررسی می‌شود تا اطمینان حاصل شود که فقط به انواع و فیلدهای تعریف شده اشاره دارد، سپس وظایف ارائه شده را اجرا می کند تا نتیجه را بدست آورد.

 

به عنوان مثال عبارت:

قطعه کد شماره 3

 

می‌تواند نتیجه JSON را تولید کند:

قطعه کد شماره 4

 

اسکیما ((Schema:

GraphQl اسکیمای قابل خواندن از سوی انسان به نام (زبان تعریف اسکیما) (Schema Definition Language ) یا به اختصار SDL نامیده می‌شود. به وسیله‌ی آن می‌توان از هر فریم ورک یا زبانی استفاده کرد و مهم نیست از چه فناوری استفاده می‌کنید در هر صورت SDL یکسان است.

زبان اسکیما از این جنبه بسیار مفید است که درک این که API شما چه انواعی خواهد داشت، ساده است و با نگاه کردن به API می ‌توان آن را درک کرد.

 

Type ها:

Typeها، یکی از مهم‌ترین خصوصیت‌های GraphQL هستند. Typeها، شیءهای خاصی هستند که چگونگی نمایشAPI  را تعیین می‌کنند. برای نمونه اگر یک اپلیکیشن شبکه اجتماعی می‌سازید،  APIشامل انواعی مانند Posts ,Users ,Likes و Groups خواهد داشت. تایپ‌ها، دارای فیلد هستند و فیلدها نوع خاصی از داده‌ها را باز می‌گردانند.

در GraphQL با سه مفهوم عمده سر و کار داریم:

  1. کوئری‌ها: روشی که با آن داده‌ها را از سرور می‌گیریم.
  2. جهش‌ها:(Mutations ) روشی که برای اصلاح داده‌ها روی سرور و دریافت مجدد داده‌ها استفاده می‌کنیم  create, update, delete
  3. اشتراک‌ها :(Subscriptions ) روشی که یک اتصال همزمان را روی سرور حفظ می‌کنیم.

 

هنر‌نمایی گراف کیوال (GraphQL) در زبان‌های برنامه‌نویسی

ویژگی دیگری که به عنوان مزیت اصلی GraphQL می‌توان عنوان کرد، این است که می توان از آن در تمامی زبان‌های برنامه‌نویسی استفاده کرد. کافیست به صفحه‌ گیت‌هاب گراف کیوال بروید تا به راحتی بتوانید ابزار Open Source را روی پروژه خود پیاده سازی کنید. در حال حاضر شرکت‌های بزرگی مثل Github ،Facebook ،Pinterest از این ابزار قدرتمند برای توسعه ی api‌های خود استفاده می ‌کنند.

 

نتیجه‌گیری:

باید در نظر داشته باشید که در میان ساختار‌های مختلفی که برای توسعه پروژه وجود دارد بهترین انتخاب را داشته باشید تا بتوانید بهترین عملکرد و کاراریی را از آن خود کنید و با پیشبرد اهداف پروژه، تجربه لذت بخشی را نیز در کنار سایر تیم‌هایی که به طور همروند در مسیر توسعه پروژه شما را همراهی کرده اند داشته باشید.

در همین راستا GraphQl با توجه به توضیحاتی که داده شد می‌تواند بهترین گزینه برای یاری رساندن به شما در پروژه‌های تجاریتان باشد و مسیر همواری را برای تیم شما و تیم‌های دیگر همروند شما ارائه دهد.

با توجه به پیشرفت روز به روز وب و همچنین نیاز روز افزون به‌api ها از وب سرورها و همچنین گسترش اپ‌های دستگاه‌ها، نیاز بیشتری به api وجود دارد. گراف کیوال (GrapQL) ابزاری بسیار کاربردی می‌باشد که به وسیله آن می‌توانید به راحتی به این نیازها پاسخ دهید و از شر پیچیدگی بیش از حد آن خلاص شوید.

از آنجایی که یادگیری GraphQl یک موضوع مهم در توسعه پروژه‌ها محسوب می‌شود بدون شک شما در هر سازمانی که مشغول به کار باشید باید به آن مسلط باشید و به همین دلیل در آینده‌ای نزدیک آموزش گراف کیوال را در سایت قرار خواهیم داد تا شما کاربران عزیز به صورت تجربی و با جزئیات GraphQl آشنا شوید و بتوانید به راحتی API‌های خودتان را توسعه دهید.

با ما همراه باشید...


کلمات کلیدی :
GraphQl