C# (.NET) में GraphQL: लाइब्रेरीज़ और टूल्स का अवलोकन
\n\nGraphQL एक API के लिए क्वेरी भाषा है जो क्लाइंट को केवल वही डेटा माँगने की अनुमति देती है जिसकी उन्हें वास्तव में आवश्यकता होती है। C# (.NET) इकोसिस्टम में GraphQL सर्वर और क्लाइंट को लागू करने के लिए कई शक्तिशाली लाइब्रेरीज़ मौजूद हैं। इस लेख में हम दो सबसे लोकप्रिय लाइब्रेरीज़ पर चर्चा करेंगे: Hot Chocolate और GraphQL.NET। दोनों लाइब्रेरीज़ सक्रिय रूप से विकसित हो रही हैं, ओपन-सोर्स हैं और इनमें उत्कृष्ट दस्तावेज़ीकरण है।
\n\n1. Hot Chocolate — ChilliCream का आधुनिक फ्रेमवर्क
\n\nHot Chocolate .NET के लिए एक पूर्ण-विशेषताओं वाला GraphQL फ्रेमवर्क है जो सर्वर और क्लाइंट दोनों भागों को सपोर्ट करता है। यह ASP.NET Core और Entity Framework Core के साथ एकीकृत होता है, जो सुविधाजनक एट्रीब्यूट और स्वचालित स्कीमा जनरेशन प्रदान करता है।
\n\nइंस्टॉलेशन और बेसिक सर्वर
\n\nशुरू करने के लिए NuGet के माध्यम से पैकेज इंस्टॉल करें:
\n\ndotnet 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 क्लाइंट के माध्यम से क्वेरी भेज सकते हैं:
{
book {
title
author
}
}\n\nHot Chocolate म्यूटेशन, सब्सक्रिप्शन, फ़िल्टरिंग, सॉर्टिंग, पेजिनेशन और UseProjection, UseFiltering और UseSorting के माध्यम से Entity Framework के साथ एकीकरण को सपोर्ट करता है।
म्यूटेशन के साथ उदाहरण
\n\npublic 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\n2. GraphQL.NET — हल्की और समय-परीक्षित लाइब्रेरी
\n\nGraphQL.NET (जिसे graphql-dotnet के नाम से भी जाना जाता है) C# में मूल JavaScript GraphQL इम्प्लीमेंटेशन का एक पोर्ट है। यह टाइप और फ़ील्ड के माध्यम से मैन्युअल स्कीमा निर्माण प्रदान करता है, जो API संरचना पर पूर्ण नियंत्रण देता है।
\n\nइंस्टॉलेशन और उदाहरण
\n\ndotnet 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();\