آشنایی با Aliases، Fragment، Variable و Directive در GraphQL

  • مدرس : علی بیگدلی
  • تاریخ انتشار: 1404/06/23
  • تعداد بازدید: 1

آشنایی با Aliases، Fragment، Variable و Directive در GraphQL

در GraphQL علاوه بر پرس‌وجوها، تغییر داده‌ها و دریافت تغییرات زنده، چند قابلیت پیشرفته وجود دارد که کار با داده‌ها را منعطف‌تر و ساده‌تر می‌کند. در این درس با Aliases، Fragment، Variable و Directive آشنا می‌شویم.

1. Aliases (نام مستعار)
گاهی اوقات می‌خواهیم یک فیلد را چند بار در یک پرس‌وجو درخواست کنیم، اما نتایج آن‌ها باید به شکل جداگانه برگردانده شوند. در اینجا Aliases کاربرد دارد و به هر درخواست یک نام مستعار می‌دهد.

مثال دریافت دو کاربر با نام‌های مختلف در یک پرس‌وجو:

{
  firstUser: user(id: 1) {
    name
    email
  }
  secondUser: user(id: 2) {
    name
    email
  }
}

در این مثال، نتایج هر کاربر با نام‌های firstUser و secondUser برگردانده می‌شود.

2. Fragment (تکه‌های پرس‌وجو)
Fragment به ما امکان می‌دهد بخش‌های مشترک پرس‌وجو را یک‌بار تعریف کنیم و در چند جا استفاده کنیم. این کار پرس‌وجوها را کوتاه‌تر و خواناتر می‌کند.

مثال تعریف Fragment برای فیلدهای مشترک کاربر:

fragment userFields on User {
  id
  name
  email
}

{
  firstUser: user(id: 1) {
    ...userFields
  }
  secondUser: user(id: 2) {
    ...userFields
  }
}

با استفاده از ...userFields، نیازی به نوشتن دوباره فیلدهای id، name و email نیست.

3. Variable (متغیر)
Variable به ما اجازه می‌دهد مقدار فیلدها را به‌صورت پویا مشخص کنیم و پرس‌وجوها را دوباره استفاده کنیم. این کار باعث می‌شود نیازی به نوشتن چندین پرس‌وجوی مشابه نباشد.

مثال استفاده از Variable برای دریافت کاربر:

query getUser($userId: ID!) {
  user(id: $userId) {
    id
    name
    email
  }
}

وقتی این پرس‌وجو اجرا شود، می‌توانیم مقدار $userId را به دلخواه تغییر دهیم و کاربر مورد نظر را دریافت کنیم.

4. Directive (دستور شرطی)
Directive به ما اجازه می‌دهد بخش‌هایی از پرس‌وجو را به صورت شرطی اجرا کنیم. معمولاً از دو Directive معروف @include و @skip استفاده می‌شود.

مثال استفاده از @include:

{
  user(id: 1) {
    id
    name
    email @include(if: true)
  }
}

در اینجا، فیلد email فقط زمانی برگردانده می‌شود که شرط if درست باشد.

جمع‌بندی

قابلیت کاربرد مثال ساده
Aliases نام‌گذاری چند درخواست مشابه در یک پرس‌وجو firstUser: user(id: 1)
Fragment استفاده مجدد از بخش‌های مشترک پرس‌وجو ...userFields
Variable استفاده از مقدار پویا در پرس‌وجو $userId
Directive اجرای شرطی فیلدها @include(if: true)

با درک این قابلیت‌ها، پرس‌وجوهای شما در GraphQL انعطاف‌پذیرتر، کوتاه‌تر و قابل استفاده مجدد خواهند بود و آماده ورود به مراحل پیشرفته‌تر کار با GraphQL خواهید شد.

ثبت دیدگاه


نکته: آدرس ایمیل شما منتشر نخواهد شد

دیدگاه کاربران (0)


هیچ دیدگاهی ثبت نشده است. می‌توانید اولین نفر باشید.