گرف کیو ال (انگلیسی: GraphQL) یک زبان برای query , به طور داخلی توسعهداده شده توسط فیسبوک در ۲۰۱۲ پیش از انتشار عمومی در ۲۰۱۵ است که یک جایگزین به معماریهای REST و خدمات وب تککاره ارائه میدهد و اجازه میدهد که مشتریها ساختار دادهٔ موردنیاز را تعریف کنند و ساختار دقیقاً مشابه توسط کارساز بازگردانی میشود. ساختار زمان اجرای آن سختگیر در نوع است که اجازه میدهد مشتریها مشخص کنند که چه دادهای مورد نیاز است. این ساختار از مشکلات واکشی بیشتر و همچنین واکشی کمتر دادهها جلوگیری میکند. گرف کیو ال در زبانهای مختلفی پیادهسازی شده است، از جمله جاوااسکریپت، پایتون، روبی، جاوا، سیشارپ، اسکالا، گو، الیکسر، ارلنگ، پیاچپی، و کلوژر.
سه خصوصیت اصلی GraphQL :
اجازه میده به client که مشخص کنه چی میخواد
جمع کردن اطلاعات از چندین منبع اطلاعات و ارسال در یک response رو راحت تر میکنه
از type system برای مشخص کردن دیتا استفاده میکنه
اصطلاحات GraphQL
Schema : یک نوع document هست که تعیین می کنه که GraphQL endpoint چه جوری اطلاعات رو بگیره و یا ارسال کنه.
Query Language : در واقع سینتکس ای هست که استفاده می کنیم برای نوشتن GraphQL queries و دریافت اطلاعات
Self-documenting API : در GraphQL یک API به راحتی قابل فهمیدن هست با خواندن schema اون API و درواقع به document جدا برای api مثل swagger در REST نیازی نیست
(GraphQL Schema Definition Language (SDL . برای تعریف schema می باشد.
در واقع بر خلاف REST که در اون هر API ENDPOINT یه ساختار مشخص رو بر میگردونه و معمولا اطلاعات اضافه که client نیاز نداره رو هم ارسال میکنه در GraphQL این client هست که به server میگه من چه دیتایی و به چه صورتی میخوام.
و به جای endpoint های مختلف به api graphql درخواست خودش رو ارسال میکنه.و برای نوشتن و خواندن اطلاعات استفاده میشه.
نکته ای که شاید زیاد سوال پیش بیاد این هست که GraphQL یک زبان query زدن به دیتابیس نیست . GraphQL یک زبان query برای API ها است.
نکته دیگه این هست که GraphQL ربطی به Graph databse ها مثل Neo4j نداره.
برای اطلاعات بیشتر می تونید به سایت graphql.org مراجعه کنید