GraphQL API مع C#: دليل خطوة بخطوة لمطوري .NET

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

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

ابدأ الدورة

مقدمة إلى GraphQL وC#

GraphQL هي لغة استعلام لواجهات برمجة التطبيقات (API) تتيح للعملاء طلب البيانات التي يحتاجونها فقط. على عكس REST، حيث تكون بنية الاستجابة ثابتة، يسمح GraphQL بتشكيل الاستعلامات بمرونة والحصول على ما هو مطلوب بالضبط. في هذا البرنامج التعليمي، سنشرح كيفية إنشاء GraphQL API كامل على منصة C# (.NET) باستخدام مكتبة Hot Chocolate.

ستكون هذه المادة مفيدة لكل من المبتدئين والمطورين ذوي الخبرة الذين يرغبون في إتقان النهج الحديث لبناء واجهات برمجة التطبيقات. سنمر بجميع المراحل: من إعداد المشروع إلى تنفيذ الاستعلامات والتحويرات. في نهاية المقال، سيكون لديك خادم GraphQL يعمل، جاهز للتكامل مع أي عميل.



تثبيت وإعداد المشروع

أولاً، نحتاج إلى إنشاء مشروع ASP.NET Core جديد. افتح الطرفية أو موجه الأوامر ونفذ الأمر التالي:

dotnet new web -n GraphQLDemocd GraphQLDemo

الآن، دعنا نضيف حزمة Hot Chocolate — وهي المكتبة الرئيسية للعمل مع GraphQL في .NET:

dotnet add package HotChocolate.AspNetCore

بعد التثبيت، افتح ملف Program.cs وقم بإعداد الخدمات. إليك الحد الأدنى من التكوين لتشغيل GraphQL:

using Microsoft.AspNetCore.Builder;using Microsoft.Extensions.DependencyInjection;

var builder = WebApplication.CreateBuilder(args);

// إضافة خدمات GraphQLbuilder.Services .AddGraphQLServer() .AddQueryType<Query>();

var app = builder.Build();

// توصيل middleware لـ GraphQLapp.MapGraphQL();

app.Run();

لاحظ: لم نقم بإنشاء الفئة Query بعد. هذا هو النوع الجذري الخاص بنا، والذي يحدد الاستعلامات المتاحة. سنقوم بإنشائه في القسم التالي.



تعريف المخطط: الأنواع والمحللون (Resolvers)

إنشاء نموذج البيانات

لنبدأ بتعريف نموذج بيانات بسيط. ليكن كتابًا:

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

إنشاء فئة Query

الآن، لننشئ الفئة Query التي ستعيد البيانات. في Hot Chocolate، المحللون (Resolvers) هم طرق عادية يمكن أن تكون متزامنة أو غير متزامنة:

public class Query{    private static readonly List<Book> Books = new()    {        new Book { Id = "1", Title = "الحرب والسلام", Author = "ليو تولستوي", Year = 1869 },        new Book { Id = "2", Title = "الجريمة والعقاب", Author = "فيودور دوستويفسكي", Year = 1866 }    };

public IQueryable<Book> GetBooks() => Books.AsQueryable();

public Book? GetBook(string id) => Books.FirstOrDefault(b => b.Id == id);}

الطريقة GetBooks تعيد قائمة بجميع الكتب، بينما GetBook تعيد كتابًا واحدًا حسب المعرف. يقوم Hot Chocolate تلقائيًا بتحويل هذه الطرق إلى حقول في مخطط GraphQL.

إعداد الأنواع (اختياري)

أحيانًا يكون من الضروري تحديد الحقول التي يجب أن تكون متاحة بشكل صريح. للقيام بذلك، يمكن استخدام السمات (Attributes) أو Fluent API. مثال مع السمات:

public class Book{    [GraphQLName("id")]    public string Id { get; set; }

[GraphQLNonNullType] public string Title { get; set; }

public string Author { get; set; } public int Year { get; set; }}

الآن، قم بتشغيل المشروع باستخدام الأمر dotnet run وانتقل في المتصفح إلى العنوان http://localhost:5000/graphql. سترى Banana Cake Pop المدمجة — وهي بيئة لاختبار الاستعلامات.



تنفيذ التحويرات (الإنشاء، التحديث، الحذف)

تُستخدم التحويرات (Mutations) في GraphQL لتغيير البيانات. لننشئ الفئة Mutation ونضيف طرقًا للعمل مع الكتب.

                

المدونات

توصيات الكتب