مفاهیم اصلی در GraphQL
چهار مفهوم اصلی Schema، Type، Field و Argument هسته مرکزی GraphQL را تشکیل میدهند. این مفاهیم مشخص میکنند که API چگونه طراحی میشود و کلاینتها به چه شکلی دادههای مورد نیاز خود را دریافت میکنند.
Schema (طرحواره)
Schema همان نقشه یا قرارداد کلی GraphQL است. این ساختار مشخص میکند که چه نوع دادههایی موجود هستند، چه پرسوجوها (Query) یا تغییراتی (Mutation) میتوان انجام داد و هر داده چه ویژگیهایی دارد. بدون Schema هیچ پرسوجویی در GraphQL معتبر نخواهد بود. برای نمونه، اگر بخواهیم سیستمی برای مدیریت کاربران و پستها داشته باشیم، میتوانیم چنین Schemaای تعریف کنیم:
type User {
id: ID!
name: String!
email: String!
}
type Post {
id: ID!
title: String!
content: String!
author: User!
}
type Query {
users: [User]
posts: [Post]
}
در اینجا Schema مشخص کرده است که چه Typeهایی وجود دارند و پرسوجوها از چه طریقی انجام میشوند.
Type (نوع داده)
Typeها ساختار اصلی دادهها را تعریف میکنند. هر Type شامل مجموعهای از Fieldهاست. GraphQL چند نوع پایهای (Scalar Type) دارد:
نوع | توضیح | مثال |
---|---|---|
Int |
عدد صحیح 32 بیتی | 42 |
Float |
عدد اعشاری | 3.14 |
String |
رشته متنی | "Hello" |
Boolean |
مقدار درست یا نادرست | true |
ID |
شناسه یکتا (اغلب رشته یا عدد) | "usr_123" |
علاوه بر اینها، میتوان Typeهای سفارشی مانند User
یا Post
تعریف کرد.
Field (فیلد)
Fieldها خصوصیات یک Type را نشان میدهند. در Type User
، فیلدهای name
و email
ویژگیهای کاربر هستند. زمانی که کلاینت پرسوجو میفرستد، باید دقیقاً فیلدهای مورد نیازش را مشخص کند. برای مثال:
{
users {
id
name
}
}
در این پرسوجو فقط id
و name
برگردانده میشود و فیلد email
نادیده گرفته خواهد شد.
Argument (آرگومان)
Argumentها ورودیهایی هستند که به پرسوجو یا Mutation داده میشوند تا خروجی دقیقتر شود. فرض کنید میخواهیم فقط یک کاربر خاص را بر اساس شناسهاش دریافت کنیم:
{
user(id: 1) {
name
email
}
}
در اینجا آرگومان id: 1
مشخص میکند که فقط کاربری با شناسه ۱ برگردانده شود. همچنین آرگومانها میتوانند برای فیلتر کردن لیستها، مرتبسازی یا محدود کردن نتایج نیز استفاده شوند.
جمعبندی مفاهیم
مفهوم | کارکرد | نمونه |
---|---|---|
Schema | نقشه کلی API | تعریف User و Post و Queryها |
Type | ساختار دادهها | User { id, name, email } |
Field | خصوصیات یک Type | name و email در User |
Argument | ورودی برای پرسوجوها | user(id: 1) |
این چهار مفهوم در کنار هم پایه و اساس طراحی و کار با GraphQL را شکل میدهند و بدون درک آنها، امکان ساخت یا استفاده مؤثر از GraphQL وجود ندارد.