انواع دادهها در GraphQL
در GraphQL هر دادهای که از سرور دریافت میکنیم یا ارسال میکنیم، یک نوع مشخص دارد. انواع دادهها به ما کمک میکنند بفهمیم چه چیزی معتبر است و چگونه میتوانیم اطلاعات را بهصورت سازماندهی شده درخواست کنیم. در این درس با پنج نوع داده مهم آشنا میشویم: Scalar، Enum، List، Non-Null و Input Type.
1. Scalar Type (نوع پایه)
Scalar سادهترین نوع داده است و یک مقدار واحد را نگه میدارد. GraphQL چند Scalar از پیش تعریفشده دارد:
نوع | توضیح | مثال |
---|---|---|
Int |
عدد صحیح | 42 |
Float |
عدد اعشاری | 3.14 |
String |
رشته متنی | "سلام" |
Boolean |
درست یا نادرست | true |
ID |
شناسه یکتا | "usr_123" |
این نوع دادهها پایهایترین بلوکها برای ساخت دادههای پیچیدهتر هستند.
2. Enum Type (نوع شمارشی)
Enum مجموعهای از مقادیر مشخص است که فقط یکی از آنها میتواند استفاده شود. مثلاً وضعیت یک سفارش میتواند فقط یکی از PENDING
، SHIPPED
یا DELIVERED
باشد:
enum OrderStatus {
PENDING
SHIPPED
DELIVERED
}
استفاده از Enum باعث میشود خطا کاهش یابد و مقادیر نادرست وارد نشوند.
3. List (لیست)
List نوعی داده است که مجموعهای از مقادیر یک نوع مشخص را نگه میدارد. مثلاً اگر یک کاربر چندین پست داشته باشد، میتوان آنها را در قالب یک لیست دریافت کرد:
type User {
id: ID!
name: String!
posts: [Post]
}
در این مثال، فیلد posts
یک لیست از Postها است.
4. Non-Null (عدم تهی بودن)
Non-Null مشخص میکند که مقدار یک فیلد نمیتواند تهی باشد. این کار باعث اطمینان از صحت دادهها میشود و با علامت !
نمایش داده میشود:
type User {
id: ID!
name: String!
email: String
}
در این مثال، فیلدهای id
و name
همیشه باید مقدار داشته باشند، اما email
میتواند خالی باشد.
5. Input Type (نوع ورودی)
Input Type برای مشخص کردن ساختار دادههایی استفاده میشود که کاربر هنگام ارسال اطلاعات میخواهد استفاده کند. برای مثال، فرض کنید میخواهیم اطلاعات یک کاربر جدید را ارسال کنیم:
input CreateUserInput {
name: String!
email: String!
age: Int
}
با تعریف Input Type، اطمینان داریم که دادههای ارسال شده سازماندهی شده و معتبر هستند.
جمعبندی
نوع داده | کاربرد | مثال ساده |
---|---|---|
Scalar | مقدار ساده و پایهای | Int, String, Boolean |
Enum | مقدار محدود و از پیش تعیینشده | OrderStatus: PENDING, SHIPPED |
List | مجموعهای از مقادیر یک نوع | [Post] |
Non-Null | مقدار فیلد نمیتواند خالی باشد | ID!, String! |
Input Type | تعریف ساختار دادههای ورودی | CreateUserInput |
با درک این انواع داده، میتوانید دادههای ساده و پیچیده را بهصورت ساختاریافته در GraphQL شناسایی و استفاده کنید، بدون نیاز به دانستن جزئیات پیشرفتهتر در این مرحله.