رادکام
همیشه مشکل هایی با API وجود داشته که توسعه دهندگان را آزار میدهد:
برای حل هرکدام از مشکلات بالا در RestAPI راه حل هایی ارائه شده است.
شرکت های بزرگ نیز از این قاعده جدا نیستند فیس بوک اما عقب نکشیده است و راه حلی ارائه کرده است به نام graphql این رویکرد یک library یا یک فریم ورک نیست بلکه راه حلی برای ساخت api با ساختاری شبیه به graph است.
Graphql در اصل به جای اینکه api را در قالب endpoint های متعدد در نظر بگیرید آن ها را در قالب graph در نظر میگیرد.
فرض کنید یک اپلیکیشن وبلاگ دارید که کاربر، پست، کامنت، لایک دارد.
برای ساخت api احتمالا به صورت زیر عمل میکنید
/api/post
/api/posts/**POST_ID**
/api/posts/**POST_ID**/comments
/api/posts/**POST_ID**/likes
/api/comments/**POST_ID**
/api/users
/api/users/**USER_ID**
/api/likes/**POST_ID**
میبینیم مشکلاتی زیادی بر سر راه وجود دارد که چیز هایی که توضیح داده شد فقط قسمتی از آن ها هستند.
هدف graphql حل این موارد است.
در graphql شما داده را به صورت graph میبینید و حتی به صورت Graph درخواست میکنید
نکته: graph ها را در graphql به صورت json در نظر میگیریم
فرض کنید میخواهیم در یک api که با GraphQL نوشته شده است پست ها را دریافت کنیم به صورت زیر عمل میکنیم:
Query:
{
post
}
حال اگر بخواهیم فیلد های مشخصی را دریافت کنیم به صورت زیر عمل میکنیم:
Query:
{
post {
title,
body,
userId
}
}
گفتیم که از موجودیت post فیلد های title, body, userID را دریافت کن.
فرض کنید میخواهیم پست هایی دریافت کنیم که ID نویسنده آن 10 باشد.
Query:
{
post(userID: 20) {
title,
body
}
}
با امکان فوق میتوانیم pagination را نیز پیدا سازی کنیم مثلا بگوییم count را مساوی 10 قرار بده.
Query:
{
post(userID: 20, count: 10, offset= 20) {
title,
body
}
}
فرض کنید میخوایم در کنار هر اطلاعات کاربر نیز موجود باشد.
Query:
{
post(userID: 20) {
title,
body,
user: {
name,
family,
username,
}
}
}
همین کار را میتوانیم برای comment نیز انجام دهیم.
چیز هایی که در بالا گفته شد دریافت اطلاعات از یک سرور GraphQL است برای اطلاعات بیشتر میتوانید به سایت زیر مراجعه کنید:
http://graphql.org/
در قسمت بعد نحوه پیاده سازی همین api را با graphql آموزش خواهیم داد.
11,191بازدید
دیدگاه کاربران
هنوز دیدگاهی ثبت نشده است.
شما میتوانید درباره این مقاله، دیدگاه خود را ثبت کنید.