परिचय: क्यों GraphQL और C# एक आदर्श जोड़ी हैं
\nआधुनिक वेब डेवलपमेंट में लचीले और उच्च-प्रदर्शन वाले API की आवश्यकता होती है। REST API, अपनी लोकप्रियता के बावजूद, अक्सर over-fetching (अनावश्यक डेटा प्राप्त करना) और under-fetching (पूरी जानकारी प्राप्त करने के लिए कई अनुरोधों की आवश्यकता) से ग्रस्त होता है। GraphQL इन समस्याओं को हल करता है, जिससे क्लाइंट एक ही अनुरोध में केवल वही डेटा मांग सकता है जिसकी उसे आवश्यकता है।
\nइस ट्यूटोरियल में, हम Hot Chocolate लाइब्रेरी का उपयोग करके C# में एक पूर्ण GraphQL API बनाएंगे - जो .NET के लिए सबसे लोकप्रिय GraphQL कार्यान्वयन है। आप सीखेंगे कि सर्वर कैसे सेट अप करें, स्कीमा कैसे परिभाषित करें, क्वेरी (queries), म्यूटेशन (mutations) और सब्सक्रिप्शन (subscriptions) कैसे लागू करें। सभी कोड उदाहरण व्यावहारिक और उपयोग के लिए तैयार होंगे।
\nयह सामग्री किसके लिए है: उन .NET डेवलपर्स के लिए जो GraphQL सीखना चाहते हैं, और उनके लिए जो REST के विकल्प की तलाश कर रहे हैं। C# और ASP.NET Core का बुनियादी ज्ञान उपयोगी होगा, लेकिन अनिवार्य नहीं है।
\n\n1. प्रोजेक्ट सेटअप और Hot Chocolate की स्थापना
\nASP.NET Core प्रोजेक्ट बनाना
\nएक नया प्रोजेक्ट बनाकर शुरू करें। टर्मिनल या कमांड प्रॉम्प्ट खोलें और निम्नलिखित चलाएँ:
\ndotnet new web -n GraphQLDemo\ncd GraphQLDemo\nअब Hot Chocolate पैकेज स्थापित करें:
\ndotnet add package HotChocolate.AspNetCore\ndotnet add package HotChocolate.AspNetCore.Playground\nHotChocolate.AspNetCore पैकेज GraphQL अनुरोधों को संसाधित करने के लिए middleware जोड़ता है, और HotChocolate.AspNetCore.Playground परीक्षण के लिए एक अंतर्निहित IDE (GraphQL Playground) प्रदान करता है।
Startup कॉन्फ़िगरेशन
\nProgram.cs (या .NET 5 और उससे नीचे के लिए Startup.cs) फ़ाइल को संपादित करें। बुनियादी कॉन्फ़िगरेशन जोड़ें:
var builder = WebApplication.CreateBuilder(args);\n\n// GraphQL सेवाएँ जोड़ें\nbuilder.Services\n .AddGraphQLServer()\n .AddQueryType<Query>()\n .AddMutationType<Mutation>(); // बाद में जोड़ेंगे\n\nvar app = builder.Build();\n\n// Middleware जोड़ें\napp.UseRouting();\napp.MapGraphQL(); // एंडपॉइंट /graphql\napp.MapGraphQLPlayground(); // Playground /playground पर उपलब्ध\n\napp.Run();\nध्यान दें: Query और Mutation वे क्लास हैं जिन्हें हम आगे बनाएंगे। अभी केवल Query को रखें।
2. डेटा मॉडल और पहली क्वेरी (Query) बनाना
\nBook मॉडल
\nएक सरल पुस्तक मॉडल बनाएँ। Models/Book.cs फ़ाइल जोड़ें:
namespace GraphQLDemo.Models;\n\npublic class Book\n{\n public int Id { get; set; }\n public string Title { get; set; } = string.Empty;\n public string Author { get; set; } = string.Empty;\n public int Year { get; set; }\n public decimal Price { get; set; }\n}\n\nQuery क्लास
\nअब Query क्लास बनाएँ, जिसमें डेटा प्राप्त करने के तरीके होंगे। GraphQL/Query.cs फ़ाइल जोड़ें:
using GraphQLDemo.Models;\n\nnamespace GraphQLDemo.GraphQL;\n\npublic class Query\n{\n // अस्थायी डेटा स्टोरेज (वास्तविक प्रोजेक्ट में - डेटाबेस)\n private static readonly List<Book> Books = new()\n {\n new Book { Id = 1, Title = "वॉर एंड पीस", Author = "लियो टॉल्स्टॉय", Year = 1869, Price = 29.99m },\n new Book { Id = 2, Title = "क्राइम एंड पनिशमेंट", Author = "फ्योडोर दोस्तोयेव्स्की", Year = 1866, Price = 24.99m },\n new Book { Id = 3, Title = "द मास्टर एंड मार्गारीटा", Author = "मिखाइल बुल्गाकोव", Year = 1967, Price = 19.99m }\n };\n\n // क्वेरी: सभी पुस्तकें प्राप्त करें\n public IQueryable<Book> GetBooks() => Books.AsQueryable();\n\n // क्वेरी: ID द्वारा पुस्तक प्राप्त करें\n public Book? GetBookById(int id) => Books.FirstOrDefault(b => b.Id == id);\n}\nडेटा लौटाने वाले तरीकों को resolver कहा जाता है। Hot Chocolate स्वचालित रूप से