GraphQL چیست؟ Api های قدرتمند بسازید!
برنامه نویسی زمان مطالعه: 7 دقیقه تاریخ انتشار: 1 سال قبل

GraphQL چیست؟ Api های قدرتمند بسازید!

حتما شما مثل من بر روی گوش های خود اپلیکیشن های مختلفی نصب کرده اید و در روز از بسیاری از آنها استفاده می کنید. تاکنون فکر کرده اید اپلیکیشن دیوار یا دیجی کالا چگونه کار می کنند؟ اطلاعات و محصولات مختلف را  چگونه نمایش می دهند؟ این اپلیکیشن ها برای نمایش اطلاعات باید حتما به یک سرور در شبکه اینترنت متصل شوند تا بتوانند با دریافت و پردازش آنها را به نمایش در آوردند. برای برقراری و اتصال ارتباط بین اپلیکیشن ها و سرور وب از رابطی با نام Web Api استفاده می شود. Web Api خود مجموعه ای از Api است که تحت یک معماری پیاده سازی شده اند. یکی از بروزترین و حرفه ای ترین معماری های حال حاظر برای پیاده سازی Web Api ها ابزار GraphQL است که قصد داریم در ادامه این مقاله به بررسی آن بپردازیم پس با ما همراه باشید و این مقاله جذاب را از دست ندهید.

 

API چیست؟

Api ها رابط های برنامه نویسی هستند که ارتباط بین نرم افزارهای مختلف را برقرار می کنند. مخفف عبارت Application Programming Interface و به معنی رابط برنامه نویسی اپلیکیشن است. در توسعه نرم افزار از ابزارها یا کتابخانه های مختلفی جهت پیاده سازی api و برقراری ارتباط بین نرم افزارها استفاده می شود.

در دنیای وب از Api هم برای اتصال یک اپلیکیشن به سرور و هم برای اتصال دو سرور به یکدیگر استفاده می شود. Api برای برقراری ارتباط از پروتکل HTTP استفاده می کند و همانطور که گفتیم روش ها و ابزارهای مختلفی برای پیاده سازی آن وجود دارد. Rest و GraphQL دو روش عالی برای پیاده سازی یک Api هستند. در این روش ها درخواست در قالب HTTP برای سرور ارسال شده و سرور پاسخ را درقالب فرمت ها JSON یا XML بر می گرداند.

اگر بخواهیم مثالی بزنیم میتوانیم ارسال پیامک تایید شماره موبایل که در بسیاری از سایت ها مشاهده می کنید را نام ببریم. زمانی که شما قصد ثبت نام در سایت herod.ir را دارید از شما درخواست می شود تا با وارد کردن شماره موبایل خود آن را تایید کنید. زمانی که شما موبایل خود را وارد می کنید از طریق کدنویسی که در سمت سرور سایت هیرود انجام شده با استفاده از Api شماره موبایل و کد تایید شما برای سرویس دهنده پیامکی ارسال میشه و سپس شما با دریافت آن کد اقدام به تایید حساب کاربری خود می کنید. در این مثال ما برای ارتباط با سرویس دهنده پیامک در سرور سایت هیرود می توانیم از REST یا GraphQL برای برقراری ارتباط استفاده کنیم.

 

GraphQL چیست؟

GraphQL یک زبان query نویسی است که میتوانیم با آن یک Api بسازیم و به عنوان یک معماری برای پیاده سازی Api به حساب میاد. توسط شرکت فیسبوک برای استفاده و رفع ایرادات ارتباطات داخلی اپلیکیشن ها ایجاد شد و سپس به علت کارایی بالا به صورت خاص در توسعه شبکه های اجتماعی مورد استفاده قرار گرفت. فیسبوک در سال 2015 تصمیم گرفت تا ان را به صوتر متن باز برای استفاده سایر برنامه نویسان عرضه کند. در این GraphQL مانند روش REST مسیرها یا End point های زیادی نداریم و با تعریف یک End point میتوانیم با ارسال نوع داده، پاسخ مورد نظر خود را دریافت کنیم!

 

مزایای GraphQL و چرا باید از GraphQL استفاده کنیم؟

مهم ترین ویژگی ها GraphQL را در ادامه مورد بررسی قرار میدهیم تا پاسخ سوال چرا باید از GraphQL استفاده کرد؟ برایتان روشن شود!

 

GraphQL فقط آنچه که نیاز دارید در Response به شما می دهد!

در معماری GraphQL برای توسعه Api یک CLient می تواند دقیقا میتواند در قالب یک query از سرور درخواست کند که چه اطلاعاتی را نیاز دارد. سرور با دریافت آن درخواست که اصطلاحا به آن Request گفته می شود تنها اطلاعات درخواست شده را در قالب پاسخ یا همان Response برای کلاینت ارسال می کند. یکی از مهم ترین مزایای این سیستم این است که توسعه دهنده در کار با Api با داده ها زیاد و اضافی روبرو نیست و فقط آنچه که نیاز دارد را دریافت می کند. همچنین حجم کمتر داده باعث افزایش سرعت می شود.

 

ورژن Api در GraphQL مهم نیست!

در GraphQl به علت ساختاری که دارد ورژن Api اهمیتی ندارد یعنی بدون تغییر نسخه میتوانیم به توسعه Api ساخته شده با GraphQL بپردازیم و توسعه دهندگان دیگر لازم نیست خود را درگیر نسخه بندی Api کنند.

 

انعطاف پذیر بالای GraphQL

همانطور که گفتیم توسعه دهنده می تواند با تعریف یک query تنها اطلاعات مورد نیاز خود را از سرور دریافت کند. همین امر انعطاف پذیری GraphQl را بالا می برد و توسعه دهنده داده اضافه ای دیافت نمی کند و دقیقا می تواند با انعطاف بالا مشخص کند که به اطلاعاتی نیاز دارد و دقیقا همان موارد را دریافت کند!

 

فعالیت توسعه دهندگان به صورت همزمان در GraphQL

با توجه عدم وجود ورژن بندی Api چند تیم می توانند همزمان روی یک پروژه کار کنند. فرض کنید یک توسعه دهنده فرانت اند برای انجام کار باید منتظر تکمیل Api توسط توسعه دهنده بک اند باشد. در GraphQL این اتفاق رخ نمی دهد و توسعه دهنده فرانت اند میتواند با Api اولیه اراده شده کار کند و به توسعه و تست پروژه بپردازد و از سمت دیگر توسعه دهنده بک اند به توسعه Api بپردازد! قطعا این ویژگی خیلی مهمه به خصوص برای تیم های بزرگ :)

 

سرعت بالاتر با دریافت کمتر داده در GraphQL

پیش تر گفتیم در GraphQL توسعه دهنده می تواند در قالب تعریف query فقط داده مورد نیاز خود را دریافت کند. به اینصورت که دقیقا با مشخص کردن نام و نوع داده میتوان آن query را به سمت سرور ارسال کرد و سرور فقط فقط داده های درخواست شده را به عنوان پاسخ برای شما برمی گرداند. با این روش از ارسال و دریافت داده های اضافی و بدون استفاده جلوگیری می شود و قطعا این امرباعث افزایش سرعت می شود. یکی از مهمترین پارامترها در Api ها سرعت آن است. هرچه درخواست های ما زودتر پاسخ دریافت کنند در نتیجه سرعت اپلیکیشن ما بالاتر و کاربران خوشحال تر خواهند بود :)

 

ساختار Strongly Typed

ویژگی Strongly Typed یعنی اجازه ندارید داده ای تعریف کنید که نوع آن وجود ندارد. به عبارتی باید برای داده تعریف شده، نوع آن نیز تعیین گردد. این ویژگی دارای مزیت های مانند دیباگ سریع تر، یکسان سازی کلاینت و سرور و ... را داراست.

 

آیا GraphQL معایبی هم دارد؟

قطعا GraphQL در کنار مزایایی که دارد معایبی هم دارد. یکی از مهمترین معایب GraphQL شاید عدم پشتیبانی از cache باشد که این امر در روش REST خیلی کاربردی است.

اما میتوان با ابزار Rely این ویژگی را به GraphQL اضافه کرد اما عملکرد آن مانند REST چندان بهینه نیست.

معمولا کدنویسی و توسعه Api ها با GraphQL کمی پیچیده تر از سایر روش هاست چرا که ما باید با تعریف query ها کد پیشتر و پیچیده تری بنویسم و در سمت سرور برای راحت تر کردن کدنویسی باید از پکیج های جانبی استفاده کنیم و حتما نیازمن دانش بالاتری است.

با توجه به روند کار GraphQL و نوشتن query برای درخواست ها باید با Schema ها و نوع داده ها به خوبی آشنا باشید. همچنین باید در کدنویسی بسیاری از موارد امنیتی را در حد بالایی در نظر بگیرید تا زمانی که توسعه دهنده دیگر برای ایجاد درخواست اقدام به نوشتن query می کند نتواند با نوشتن query های مخرب نوتاند به سیستم نفوذ کند.

 

نصب و استفاده از GraphQL در Nodejs و لاراول

شما میتوانید به راحتی با استفاده از Npm اقدام به نصب GraphQL در پروژه های جاوا اسکریپتی خود مانند زبان Nodejs کنید. میتوانید با مراجعه به این صفحه با نحوه نصب و راه اندازی اولیه GraphQL در Nodejs آشنا شوید.

همچنین برای استفاده از GraphQL در لاراول می توانید از پکیج graphql-laravel استفاده کنید. دارای محبوبیت بالا و امکانات زیاد!

در ادامه برای آشنایی بیشتر با نحوه و سینتکس کدنویسی در GraphQL می توانید نگاهی به تصویر بندازید.

 

بیا نتیجه بگیریم

GraphQL یک زبان query نویسی است برای ساخت Api و یک معماری توسعه نرم افزار است. یکی از مهمترین ویژگی ها آن این است که توسعه دهنده می تواند با تعریف پارامتر های مورد نیاز خود در قالب یک query تنها همان اطلاعات درخواست شده را از سرور دریافت کند و هیچ داده اضافی به عنوان پاسخ دریافت نخواهد کرد این امر باعث انعطاف پذیری و سرعت بالا می شود. GraphQL یکی از جدیدترین معماری های توسعه Api است که توسط شرکت فیسبوک به صورت متن باز ارائه شده است و در توسعه شبکه های اجتماعی زیاد مورد استافده قرار گرفته است. همچنین به راحتی می توانید در Nodejs و فریمورک لاراول برای پیاده سازی Api های قوی از آن استفاده کنید. اگر تجربه کار با GraphQL را دارید خوشحال می شویم با ما و سایر کاربران از بخش نظرات به اشتراک بگذارید.

امتیاز به این مقاله فراموش نشه
میانگین امتیاز 5 از 5 ، کل امتیازات: 3
امیر اشرفی
نویسنده: امیر اشرفی

امیر اشرفی هستم مدیر و بنیان گذار آکادمی هیرود، حدود 10 سالی میشه که در حوزه برنامه نویسی و توسعه وب و موبایل فعالیت میکنم و تونستم تجربه خوبی در این حوزه بدست بیارم. یکی از علاقه هام انتقال تجربه هایی که در اختیار دارم به دیگرانه و باعث میشه حالم خوب بشه و اشتیاق یادگیریم افزایش پیداکنه، در واقع هیرود نتیجه حال خوبیامه :)

دوره های قهرمانی پیشنهادی

اولین قدم برنامه نویسی

اولین قدم برنامه نویسی

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

سبد خرید

سبد خرید شما خالی است.

پیش به سوی قهرمانی