C# (.NET) में GraphQL: API बनाने के लिए Hot Chocolate और GraphQL.NET लाइब्रेरीज़

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C# (.NET) में GraphQL: लाइब्रेरीज़ और टूल्स का अवलोकन

\n\n

GraphQL एक API के लिए क्वेरी भाषा है जो क्लाइंट को केवल वही डेटा माँगने की अनुमति देती है जिसकी उन्हें वास्तव में आवश्यकता होती है। C# (.NET) इकोसिस्टम में GraphQL सर्वर और क्लाइंट को लागू करने के लिए कई शक्तिशाली लाइब्रेरीज़ मौजूद हैं। इस लेख में हम दो सबसे लोकप्रिय लाइब्रेरीज़ पर चर्चा करेंगे: Hot Chocolate और GraphQL.NET। दोनों लाइब्रेरीज़ सक्रिय रूप से विकसित हो रही हैं, ओपन-सोर्स हैं और इनमें उत्कृष्ट दस्तावेज़ीकरण है।

\n\n

1. Hot Chocolate — ChilliCream का आधुनिक फ्रेमवर्क

\n\n

Hot Chocolate .NET के लिए एक पूर्ण-विशेषताओं वाला GraphQL फ्रेमवर्क है जो सर्वर और क्लाइंट दोनों भागों को सपोर्ट करता है। यह ASP.NET Core और Entity Framework Core के साथ एकीकृत होता है, जो सुविधाजनक एट्रीब्यूट और स्वचालित स्कीमा जनरेशन प्रदान करता है।

\n\n

इंस्टॉलेशन और बेसिक सर्वर

\n\n

शुरू करने के लिए NuGet के माध्यम से पैकेज इंस्टॉल करें:

\n\n
dotnet add package HotChocolate.AspNetCore
\n\n

एक सरल GraphQL सर्वर बनाएँ:

\n\n
// डेटा प्रकार परिभाषित करें
public class Book
{
    public string Id { get; set; }
    public string Title { get; set; }
    public string Author { get; set; }
}

// Query क्लास बनाएँ
public class Query
{
    public Book GetBook() =>
        new Book
        {
            Id = "1",
            Title = "युद्ध और शांति",
            Author = "लियो टॉल्स्टॉय"
        };
}

// Program.cs में कॉन्फ़िगर करें
var builder = WebApplication.CreateBuilder(args);
builder.Services
    .AddGraphQLServer()
    .AddQueryType<Query>();

var app = builder.Build();
app.MapGraphQL();
app.Run();
\n\n

सर्वर चालू होने के बाद, यह /graphql पते पर उपलब्ध होगा। आप किसी भी GraphQL क्लाइंट के माध्यम से क्वेरी भेज सकते हैं:

\n\n
{
  book {
    title
    author
  }
}
\n\n

Hot Chocolate म्यूटेशन, सब्सक्रिप्शन, फ़िल्टरिंग, सॉर्टिंग, पेजिनेशन और UseProjection, UseFiltering और UseSorting के माध्यम से Entity Framework के साथ एकीकरण को सपोर्ट करता है।

\n\n

म्यूटेशन के साथ उदाहरण

\n\n
public class Mutation
{
    public Book AddBook(string title, string author) =>
        new Book { Id = Guid.NewGuid().ToString(), Title = title, Author = author };
}

// रजिस्ट्रेशन
builder.Services
    .AddGraphQLServer()
    .AddQueryType<Query>()
    .AddMutationType<Mutation>();
\n\n

2. GraphQL.NET — हल्की और समय-परीक्षित लाइब्रेरी

\n\n

GraphQL.NET (जिसे graphql-dotnet के नाम से भी जाना जाता है) C# में मूल JavaScript GraphQL इम्प्लीमेंटेशन का एक पोर्ट है। यह टाइप और फ़ील्ड के माध्यम से मैन्युअल स्कीमा निर्माण प्रदान करता है, जो API संरचना पर पूर्ण नियंत्रण देता है।

\n\n

इंस्टॉलेशन और उदाहरण

\n\n
dotnet add package GraphQL
dotnet add package GraphQL.SystemTextJson
dotnet add package GraphQL.Server.Transports.AspNetCore
\n\n

एक सरल सर्वर बनाएँ:

\n\n
// टाइप परिभाषित करें
public class BookType : ObjectGraphType<Book>
{
    public BookType()
    {
        Field(x => x.Id);
        Field(x => x.Title);
        Field(x => x.Author);
    }
}

// स्कीमा बनाएँ
public class AppSchema : Schema
{
    public AppSchema(IServiceProvider provider) : base(provider)
    {
        Query = provider.GetRequiredService<BookQuery>();
    }
}

// Query
public class BookQuery : ObjectGraphType
{
    public BookQuery()
    {
        Field<BookType>("book")
            .Resolve(context => new Book
            {
                Id = "1",
                Title = "अपराध और दंड",
                Author = "एफ.एम. दोस्तोयेव्स्की"
            });
    }
}

// Program.cs सेटअप
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSingleton<BookQuery>();
builder.Services.AddSingleton<AppSchema>();
builder.Services.AddGraphQL(b => b.AddSystemTextJson());

var app = builder.Build();\                    

अनुशंसाएँ