میتوان دو مورد از پرطرفدارترین استاندارهای طراحی API را REST و graphQL دانست. در گذشته REST محبوبترین استاندارد طراحی API بود؛ اما با ورود graphQL، چالش اصلی برنامهنویسان انتخاب یکی از این دو معماری شد. باید گفت، برای اینکه ما بتوانیم معماریهای طراحی API را انتخاب کنیم، ابتدا نیاز است تا نیازها و فعالیت خودمان را بسنجیم و سپس به بررسی مزایا و معایب آنها بپردازیم. در این مقاله از شرکت نرم افزاری وب نگاه، به بررسی مفهوم و مقایسه REST و graphQL و مزایا و معایب آنها میپردازیم. در ادامه با ما همراه باشید.
API چیست؟
قبل از اینکه به مفهوم graghQL و REST بپردازیم، نیاز است تا با مفهوم API آشنا شوید. API مخفف عبارت Application Programming Interface است که به معنای رابط برنامه نویسی اپلیکیشن است.
اگر بخواهیم کاربرد API را به زبان ساده توضیح دهیم، میتوانیم بگوییم که API ها کتابخانه یا ابزارهایی هستند که به برنامه نویسان امکان نوشتن یک کد و ارتباط آن با دیگر نرمافزارها را ارائه میدهد.
برنامه نویسان میتوانند از API برای اتصال یک اپلیکیشن به سرور سایت در جهت خواندن دادهها استفاده کنند که به این تکنولوژی WEBAPI میگویند؛ یعنی دادهها همزمان در فضای وب و یک یا چند اپلیکیشن نمایش داده میشوند.
برای مثال فرض کنید که شما اپلیکیشن یک فروشگاه آنلاین را نصب میکنید و میتوانید در آن، دادههایی مانند عکس محصولات، نظرات کاربران، ویدیوهای بررسی محصولات و درگاههای بانکی را مشاهده کنید. شاید با خود فکر کنید که چگونه این حجم از اطلاعات که نیاز به فضای چند گیگی دارند، در یک اپلیکیشن ۳۰ مگابایتی نمایش داده میشوند؟
پاسخ این است که در این روش از طراحی اپلیکیشن موبایل، این دادهها در سرور سایت بارگزاری شدهاند و با استفاده از تکنولوژی WEBAPI به اپلیکیشن متصل شدهاند. حال که با مفهوم API و WEBAPI آشنا شدید، نوبت به آن رسیده تا با دو واژه REST و graphQL و تفاوتهای آنها آشنا شوید.
[vc_row][vc_column][cz_button title=”سفارش طراحی اپلیکیشن اختصاصی” btn_position=”cz_btn_center” btn_effect=”cz_btn_zoom_in” id=”cz_62405″ link=”url:tel%3A%2009339017809″ sk_button=”border-radius:70px;padding-left:30px;padding-right:30px;font-size:22px;background-color:unset !important;background-image:linear-gradient(135deg,#1e73bb,#b40ed6);” sk_hover=”color:#ffffff;” icon=”fa fa-phone-square” cz_button=””][/vc_column][/vc_row]
REST چیست؟
عبارت REST مخفف سه واژه Representational State Transfer است که معنای انتقال بازنمودی حالت را میدهد. میتوانیم بگوییم که کاربرد اصلی REST تعیین کردن چگونگی ظاهر API ها است.
REST توسط شخصی به نام Roy fielding در پایاننامه دکترا ارائه شد و امروزه کاربردهای فراوانی برای برنامه نویسی در حوزه API ها دارد. به طور کلی، یکی از کارکردهای REST جدا کردن لایه بکاند و فرانتاند است و به همین دلیل مجموعهای از قوانین مشخص برای آن وضع شده است. لازم است توجه داشته باشید که هر API، REST نیست و سرویسهایی که از REST استفاده میکنند را RESTFULL مینامند.
GraphQL چیست؟
گراف کیو ال ابتدا توسط فیسبوک در سال ۲۰۱۲ و با هدف رفع مشکلات اپلیکیشنهای موبایلی مورد استفاده قرار گرفت و سرانجام در سال ۲۰۱۵ به عنوان یک پروژه متنباز در دسترس عموم قرار گرفت. به طور کلی میتوان گفت گراف کیو ال (graphQL) یک query language برای ایجاد و ساخت API است.
کاربر در این نوع معماری، داده مورد انتخاب خود را توصیف میکند و سرور همان داده مشخص شده را به او برمیگرداند و نمایش میدهد.
تفاوت REST و graphQL
تا به اینجای کار متوجه شدیم که REST و graphQL دو معماری بر
ای ساخت API یا همان WEBAPI هستند. در اغلب موارد پیش میآید که برنامه نویسان هنگام انتخاب یک معماری برای طراحی و ساخت API، بین REST و graphQL تردید دارند و پروسه انتخاب برای آنها سخت میشود.
درست است که هر دوی اینها دو معماری برای طراحی WEBAPI هستند؛ اما این دو معماری، دارای مجموعهای از تفاوتها هستند که شما میتوانید با دانستن آنها، انتخاب بهتری بین این دو داشته باشید. در این بخش به بررسی اصلیترین تفاوتهای REST و graphQL میپردازیم.
وجود تفاوت در endpoint ها
به طور کلی endpoint در این نوع معماریها به معنای واکنش نشان دادنِ یک url بر اساس متدهای مختلف است. ما در REST چند نوع endpoint داریم؛ یعنی یک url که نسبت به متدهای مختلف HTTP واکنش نشان میدهد. مانند GET/users یا POST/product؛ یعنی به طور کلی کاربر میتواند از url های مختلف به هدف نهایی خود دست پیدا کند.
وجود تفاوت در دادههای ارسالی
در هر دوی این معماریها، اطلاعات اغلب به روش JSON ارسال و دریافت میشوند؛ اما همواره روشهای دیگری هم وجود دارند که این دو معماری از آنها استفاده میکنند و همین موضوع باعث ایجاد تفاوت اندکی بین آنها میشود. در برخی از موارد پیش میآید که با با استفاده از گراف کیو ال و در یک end point، یک فایل برگردانیم یا در REST، دادههای باینری ارسال کنیم؛ اما باید توجه داشته باشید که این اعمال خیلی کم انجام میشوند و در اکثر مواقع، از همان روش JSON برای این کار استفاده میشود. میتوان گفت در این مورد خاص، گراف کیو ال نسبت به REST برتر ی دارد و همین موضوع باعث شده است تا روزانه به تعداد اس تفادهکنندگان از این معماری اضافه شود.
وقتی میخواهیم در REST دادههایی را دریافت کنیم، نمیتوانیم مشخص کنیم که چه نوع دادهای را میخواهیم و همه نوع داده برای ما ارسال میشود؛ مثلا با استفاده از دستور GET/user در REST، کاربر میتواند دادههایی مانند عدد یا متن (رشته) را به دلخواه وارد کند. اگر حجم دادههای دریافتی ما زیاد باشد، این موضوع میتواند ما را به دردسر بیندازد؛ زیرا جدا کردن و مرتب کردن این دادهها، زمان طولانی را از ما میگیرد.
در مقابل، وقتی ما برای دریافت داده ها از graphQL استفاده میکنیم، میتوانیم مشخص کنیم که چه نوع دادهای مورد نظر ما است؛ مثلا میتوانیم مشخص کنیم که در یک ستون مشخص سن و در ستونی دیگر نام کاربر را میخواهیم. این موضوع باعث شده است تا افرادی که با دادههای زیادی سر و کار دارند، معماری graphQL را به REST ترجیح دهند.
سخن آخر
در این مطلب سعی کردیم تا شما را با مفهوم API و WEBAPI، مفهوم REST و graghQL و تفاوتهای آنها آشنا کنیم. لازم به ذکر است که گاهی کار با این نوع معماریها میتواند برای برخی از افراد پیچیده باشد؛ لذا پیشنهاد میشود اگر به استفاده یکی از این دو معماری احتیاج دارید و از مهارت لازم برای به کار بردن آنها بهرهمند نیستید، بهتر است تا کار را به یک فرد متخصص یا یک شرکت برنامه نویسی بسپارید.