آشنایی با Resolver و نحوه پاسخ‌دهی GraphQL

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

آشنایی با Resolver و نحوه پاسخ‌دهی GraphQL

در GraphQL، زمانی که یک کلاینت داده‌ای را درخواست می‌کند، سرور باید بداند چگونه به این درخواست پاسخ دهد. اینجا مفهوم Resolver وارد می‌شود. Resolverها نقش رابط بین پرس‌وجوهای GraphQL و داده‌های واقعی در سرور را ایفا می‌کنند.

Resolver چیست؟
Resolver یک تابع در سرور است که مشخص می‌کند هر فیلد در یک Type چگونه مقداردهی شود و چه داده‌ای به کلاینت برگردانده شود. هر فیلد در Schema می‌تواند یک Resolver داشته باشد، اما اگر مقدار فیلد مستقیم در سرور موجود باشد، می‌توان بدون تعریف Resolver از مقدار پیش‌فرض استفاده کرد.

مثال ساده:

type User {
  id: ID!
  name: String!
  email: String!
}

type Query {
  user(id: ID!): User
}

اگر کلاینت پرس‌وجو کند:

{
  user(id: 1) {
    name
    email
  }
}

سرور باید بداند که چگونه اطلاعات کاربر با شناسه ۱ را پیدا کند و فیلدهای name و email را برگرداند. برای این کار یک Resolver تعریف می‌کنیم:

const resolvers = {
  Query: {
    user: (parent, args, context, info) => {
      const userId = args.id;
      return database.findUserById(userId);
    }
  }
};

در این مثال:

  • parent: داده‌ای که از فیلد بالادستی آمده است (معمولاً در Query اصلی null است).
  • args: آرگومان‌هایی که کلاینت ارسال کرده، مثل id.
  • context: اطلاعات مشترک مثل احراز هویت یا اتصال به پایگاه داده.
  • info: اطلاعات فنی درباره پرس‌وجو و فیلدهای درخواست شده.

چگونه GraphQL پاسخ می‌دهد؟
زمانی که یک پرس‌وجو ارسال می‌شود، GraphQL به ترتیب زیر عمل می‌کند:

  1. پرس‌وجو را بررسی می‌کند تا مطمئن شود با Schema مطابقت دارد.
  2. برای هر فیلد، Resolver مربوطه را فراخوانی می‌کند.
  3. مقادیر برگشتی Resolverها را جمع‌آوری و در قالب JSON به کلاینت برمی‌گرداند.

مثال پاسخ GraphQL:

{
  "data": {
    "user": {
      "name": "Ali",
      "email": "ali@example.com"
    }
  }
}

با این مکانیزم، GraphQL دقیقاً همان داده‌هایی را که کلاینت درخواست کرده، برمی‌گرداند و می‌تواند داده‌های پیچیده و تو در تو را به شکل ساختاریافته مدیریت کند.

جمع‌بندی

مفهوم کاربرد
Resolver تابعی که مشخص می‌کند هر فیلد چگونه مقداردهی شود و داده واقعی را برگرداند
نحوه پاسخ‌دهی GraphQL بررسی پرس‌وجو با Schema، اجرای Resolverها و بازگرداندن داده‌ها در قالب JSON

با درک Resolverها، شما می‌توانید کنترل کاملی بر داده‌های دریافتی از GraphQL داشته باشید و پاسخ‌ها را دقیقاً بر اساس نیاز کلاینت تنظیم کنید.

ثبت دیدگاه


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

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


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