GraphQL और C# का परिचय
GraphQL API के लिए एक क्वेरी भाषा है जो क्लाइंट को केवल वही डेटा माँगने की अनुमति देती है जिसकी उन्हें वास्तव में आवश्यकता है। REST के विपरीत, जहाँ प्रतिक्रिया की संरचना निश्चित होती है, GraphQL लचीले ढंग से क्वेरी बनाने और ठीक वही प्राप्त करने की अनुमति देता है जो आवश्यक है। इस ट्यूटोरियल में, हम Hot Chocolate लाइब्रेरी का उपयोग करके C# (.NET) प्लेटफॉर्म पर एक पूर्ण GraphQL API बनाने का तरीका समझेंगे।
यह सामग्री शुरुआती और अनुभवी डेवलपर्स दोनों के लिए उपयोगी होगी जो API निर्माण के आधुनिक दृष्टिकोण में महारत हासिल करना चाहते हैं। हम सभी चरणों को कवर करेंगे: प्रोजेक्ट सेटअप से लेकर क्वेरी और म्यूटेशन के कार्यान्वयन तक। लेख के अंत तक, आपके पास एक कार्यशील GraphQL सर्वर होगा जो किसी भी क्लाइंट के साथ एकीकरण के लिए तैयार है।
प्रोजेक्ट की स्थापना और कॉन्फ़िगरेशन
सबसे पहले हमें एक नया ASP.NET Core प्रोजेक्ट बनाना होगा। टर्मिनल या कमांड प्रॉम्प्ट खोलें और निम्न कमांड चलाएँ:
dotnet new web -n GraphQLDemocd GraphQLDemoअब Hot Chocolate पैकेज जोड़ें - यह .NET में GraphQL के साथ काम करने के लिए मुख्य लाइब्रेरी है:
dotnet add package HotChocolate.AspNetCoreस्थापना के बाद, Program.cs फ़ाइल खोलें और सेवाओं को कॉन्फ़िगर करें। GraphQL चलाने के लिए न्यूनतम कॉन्फ़िगरेशन यहाँ दिया गया है:
using Microsoft.AspNetCore.Builder;using Microsoft.Extensions.DependencyInjection;
var builder = WebApplication.CreateBuilder(args);
// GraphQL सेवाएँ जोड़ेंbuilder.Services .AddGraphQLServer() .AddQueryType<Query>();
var app = builder.Build();
// GraphQL के लिए middleware कनेक्ट करेंapp.MapGraphQL();
app.Run();ध्यान दें: हमने अभी तक Query क्लास नहीं बनाया है। यह हमारा रूट टाइप है जो उपलब्ध क्वेरी को परिभाषित करता है। हम इसे अगले भाग में बनाएँगे।
स्कीमा की परिभाषा: प्रकार और रिज़ॉल्वर
डेटा मॉडल बनाना
शुरुआत में एक सरल डेटा मॉडल परिभाषित करते हैं। मान लीजिए यह एक पुस्तक है:
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 में, रिज़ॉल्वर सामान्य मेथड होते हैं जो सिंक्रोनस या एसिंक्रोनस हो सकते हैं:
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 स्कीमा के फ़ील्ड में बदल देता है।
प्रकारों का कॉन्फ़िगरेशन (वैकल्पिक)
कभी-कभी यह स्पष्ट रूप से बताना आवश्यक होता है कि कौन से फ़ील्ड उपलब्ध होने चाहिए। इसके लिए आप एट्रीब्यूट या 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 दिखाई देगा - क्वेरी परीक्षण के लिए एक वातावरण।
म्यूटेशन का कार्यान्वयन (निर्माण, अद्यतन, हटाना)
GraphQL में म्यूटेशन का उपयोग डेटा को बदलने के लिए किया जाता है। Mutation क्लास बनाएँ और पुस्तकों के साथ काम करने के लिए मेथड जोड़ें।