آشنایی با 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 خواهید شد.