در این نوشته قصد داریم به GraphQL بپردازیم(آموزش مقدماتی GraphQL )، اما اجازه بدهید پیش از آن قدری در مورد API صحبت کنیم. یکی از رایجترین اصطلاحها که امروزه بسیار بررسی میشود API است. افراد زیادی دقیقاً نمیدانند که API چیست. در واقع API اختصاری برای عبارت «رابط برنامهنویسی اپلیکیشن» (Application Programming Interface) است. این مفهوم چنان که نامش برمیآید، رابطی است که افراد مختلف یعنی برنامهنویسان، کاربران، مصرفکنندگان میتوانند با استفاده از دادهها با آن تعامل کنند. API را میتوان یک پیشخدمت دانست که شما از او یک نوشیدنی درخواست میکنید و او نوشیدنی مورد نظرتان را برای شما میآورد.
از زمان آغاز وب مدرن، ساخت API-ها دیگر چنان که قبلاً به نظر میرسید دشوار نبوده است. توسعهدهندگان، غالب افرادی که از API استفاده میکنند را تشکیل میدهند و از آن برای ساخت یک چیز یا صرفاً مصرف دادهها بهره میگیرند. بنابراین API باید تا حد امکان ساده و شهودی باشد. استفاده و یادگیری یک API با طراحی خوب بسیار ساده خواهد بود.
مدتهای مدیدی است که برای ساخت API ها از REST استفاده میشود. REST مشکلاتی نیز با خود همراه دارد. زمانی که API را با طراحی REST میسازید، با مشکلاتی مانند زیر مواجه میشوید:
نقاط انتهایی زیادی خواهید داشت .
بادگیری و درک API برای توسعه دهنگان بسیار دشوارتر خواهد بود.
امکان واکشی اطلاعات کمتر یا بیشتر از حد نیاز وجود دارد.
فیسبوک برای حل این مسائل GraphQL را ساخته است. امروزه به باور بسیاری از توسعهدهندگان GraphQL یکی از بهترین روشهای ساخت API محسوب میشود. در این مقاله با اهمیت GraphQL و این که چرا باید یادگیری آن را آغاز کنید آشنا میشوید. بدین ترتیب با طرز کار GraphQL آشنا میشویم و چگونگی ایجاد یک API قدرتمند، با طراحی مناسب و کارآمد با استفاده از GraphQL را توضیح میدهیم.
GraphQL یک زبان کوئری اوپنسورس است که از سوی فیسبوک توسعه یافته است. این زبان روشی کارآمد برای طراحی، ایجاد و مصرف API-ها در اختیار ما قرار میدهد و GraphQL اساساً یک جایگزین برای REST محسوب میشود.
GraphQL ویژگیهای زیادی مانند موارد زیر دارد:
شما دادههایی که دوست دارید را مینویسید و دادههایی که دقیقاً میخواهید را به دست میآورید. دیگر نیازی به واکشی اطلاعات بیش از حد نیاز چنان که در REST مرسوم است نداریم.
GraphQL یک نقطه انتهایی منفرد در اختیار ما قرار میدهد و دیگر نیازی به نسخه 2 یا نسخه 3 برای API یکسان وجود ندارد.
GraphQL دارای «نوعبندی قوی» (strongly-typed) است و با استفاده از آن میتوان یک کوئری معتبر درون سیستم نوع GraphQL پیش از اجرا ساخت. GraphQL به ساخت API-های قدرتمند کمک میکند.
پس از این مقدمه کوتاه در مورد GraphQL، دلیل قدرت آن و این که چرا محبوبیت زیادی این روزها کسب کرده است.
سرآغاز
هدف اصلی این مقاله آشنا ساختن شما با GraphQL Server نیست و از این رو فعلاً نمیخواهیم زیاد در مورد آن بحث بکنیم. هدف این مقاله آن است که با طرز کار GraphQL در عمل آشنا شوید و از این رو میخواهیم از یک سرور GraphQL بدون نیاز به هیچ پیکربندی به نام Graphpack استفاده کنیم.
برای راهاندازی باید یک پوشه جدید ایجاد کنید. شما میتوانید نام آن را هر چیزی که دوست دارید بگذارید. ما نام آن را graphql-server میگذاریم. پنجره ترمینال را باز کرده و دستور زیر را در آن وارد کنید:
mkdir graphql-server
اینک باید npm یا yarn را روی سیستم خود نصب داشته باشید. اگر نمیدانید این دو چه هستند باید بگوییم که npm یا yarn نرمافزارهای مدیریت بسته برای زبان برنامهنویسی جاوا اسکریپت هستند.. در مورد Node.js نرمافزار مدیریت بسته پیشفرض npm است. درون پوشهای که ایجاد کردهاید دستور زیر را وارد کنید:
npm init –y
در صورتی که از yarn استفاده میکنید، دستور زیر را وارد کنید:
yarn init
npm یک فایل به نام package.json برای شما ایجاد میکند و همه وابستگیهایی که نصب کردهاید و دستورهای شما در آن قرار میگیرند.
بنابراین اکنون قصد داریم Graphpack یعنی تنها وابستگی مورد نیاز که در ادامه استفاده خواهیم کرد را نصب کنیم. Graphpack امکان ایجاد سرور GraphQL بدون هیچ گونه پیکربندی را فراهم میکند. از آنجا که ما تازه شروع به کار با GraphQL کردهایم این وضعیت به ما کمک میکند که به کار خود ادامه دهیم و در مورد پیکربندی سرور خود نگرانی نداشته باشیم.
در پنجره ترمینال درون پوشه root آن را به صورت زیر نصب کنید:
npm install –save-dev graphpack
اگر از yarn استفاده میکنید میتوانید با استفاده از دستور زیر، آن را نصب کنید:
yarn add –dev graphpack
پس از این که Graphpack نصب شد، به اسکریپتهای موجود در فایل package.json مراجعه کنید و کد زیر را در آن وارد نمایید:
“scripts”: {
“dev”: “graphpack”,
“build”: “graphpack build”
}
ما قصد داریم یک پوشه به نام src ایجاد کنیم و این تنها پوشهای خواهد بود که در کل سرور داریم. در ادامه درون پوشه src فایلی به نام schema.graphql ایجاد کنید. درون این فایل کد زیر را قرار دهید:
type Query {
hello: String
}
ما همه schema مربوط به GraphQL را در این فایل schema.graphql قرار میدهیم. اگر نمیدانید schema چیست، جای نگرانی نیست، چون در ادامه آن را توضیح خواهیم داد. اینک درون پوشه src یک فایل دوم ایجاد کنید. این فایل را resolvers.js نامگذاری کنید و درون فایل دوم کد زیر را قرار بدهید:
import { users } from “./db”;
const resolvers = {
Query: {
hello: () => “Hello World!”
}
};
export default resolvers;
فایل resolvers.js دستورالعملهای تبدیل یک عملیات GraphQL به دادهها را تعیین میکند. در نهایت درون پوشه src یک فایل سوم به نام db.js ایجاد کنید و کد زیرا را درون آن قرار دهید:
export let users = [
{ id: 1, name: “John Doe”, email: “john@gmail.com”, age: 22 },
{ id: 2, name: “Jane Doe”, email: “jane@gmail.com”, age: 23 }
];
ما در این راهنما از یک پایگاه داده واقعی استفاده نمیکنیم. از این رو این فایل db.js به عنوان یک پایگاه داده برای ما عمل میکند و صرفاً مقاصد آموزشی دارد. اکنون پوشه src باید دارای ساختار زیر باشد:
[crayon-5d467178185c9190077748 class=”markup–code markup–pre-code”]src
|–db.js
|–resolvers.js
|–schema.graphql
[/crayon] در ادامه اگر دستور npm run dev را اجرا کنیم یا اگر با استفاده از yarn دستور yarn dev را اجرا کنید باید این خروجی را در ترمینال ببینید:
- برچسب ها:
- GraphQl
- آموزش مقدماتی GraphQL