GraphQL لـ C# (.NET): دليل كامل لمكتبة GraphQL.NET

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مكتبة GraphQL لـ C# (.NET) — GraphQL.NET



GraphQL هي لغة استعلام لواجهات برمجة التطبيقات (API) تتيح للعملاء طلب البيانات التي يحتاجونها فقط. في النظام البيئي لـ .NET، واحدة من أشهر التطبيقات هي مكتبة GraphQL.NET (المعروفة أيضًا باسم graphql-dotnet). توفر أدوات قوية لإنشاء واجهات برمجة تطبيقات مرنة ومكتوبة بشكل صارم وفعالة على منصة C# (.NET).



في هذه المقالة، سنستعرض بالتفصيل كيفية استخدام GraphQL.NET، وسنشرح المفاهيم الأساسية ونقدم أمثلة عملية على الكود.



ما هو GraphQL.NET؟



GraphQL.NET هي مكتبة مفتوحة المصدر تنفذ مواصفات GraphQL لمنصة .NET. تدعم كلاً من .NET Core و .NET Framework. الإمكانيات الرئيسية:



  • إنشاء مخططات مكتوبة بشكل صارم باستخدام C#.
  • دعم الاستعلامات (Query) والتحويرات (Mutation) والاشتراكات (Subscription).
  • التحقق من الصحة وتنفيذ الاستعلامات المدمجة.
  • التكامل مع أطر الويب الشائعة (ASP.NET Core، Nancy وغيرها).
  • دعم الاشتراكات عبر WebSockets (SignalR).


التثبيت والإعداد



للبدء، قم بتثبيت الحزمة عبر NuGet:



dotnet add package GraphQLdotnet add package GraphQL.SystemTextJson  // لتسلسل JSON


إذا كنت تستخدم ASP.NET Core، قم بتثبيت ما يلي أيضًا:



dotnet add package GraphQL.Server.Transports.AspNetCoredotnet add package GraphQL.Server.Ui.Playground  // واجهة مستخدم مدمجة للاختبار


إنشاء المخطط الأول



يعتمد GraphQL على مخطط يحدد أنواع البيانات والعمليات المتاحة. لنلق نظرة على مثال بسيط — واجهة برمجة تطبيقات للحصول على معلومات عن الكتب.



الخطوة 1. حدد نموذج البيانات:



public class Book{    public string Id { get; set; }    public string Title { get; set; }    public string Author { get; set; }    public int Pages { get; set; }}


الخطوة 2. أنشئ أنواع GraphQL:



public class BookType : ObjectGraphType<Book>{    public BookType()    {        Field(x => x.Id).Description("معرف الكتاب");        Field(x => x.Title).Description("عنوان الكتاب");        Field(x => x.Author).Description("المؤلف");        Field(x => x.Pages).Description("عدد الصفحات");    }}


الخطوة 3. حدد الاستعلام الجذري (Query):



public class BookQuery : ObjectGraphType{    public BookQuery(IDataStore dataStore)    {        Field<BookType>("book")            .Arguments(new QueryArguments(new QueryArgument<StringGraphType> { Name = "id" }))            .Resolve(context => dataStore.GetBookById(context.GetArgument<string>("id")));

Field<ListGraphType<BookType>>("books") .Resolve(context => dataStore.GetAllBooks()); }}


الخطوة 4. قم بتجميع المخطط:



public class BookSchema : Schema{    public BookSchema(IServiceProvider provider) : base(provider)    {        Query = provider.GetRequiredService<BookQuery>();    }}


التكامل مع ASP.NET Core



قم بتسجيل الخدمات في Program.cs (أو Startup.cs):



builder.Services.AddGraphQL(b => b    .AddSystemTextJson()    .AddSchema<BookSchema>()    .AddGraphTypes(typeof(BookType).Assembly));

builder.Services.AddScoped<IDataStore, InMemoryDataStore>();


أضف الوسيطة (middleware):



app.UseGraphQL<BookSchema>();  // نقطة النهاية الافتراضية /graphqlapp.UseGraphQLPlayground();    // واجهة مستخدم للاختبار (اختياري)


تنفيذ الاستعلام



الآن يمكنك

توصيات