C# के साथ GraphQL का परिचय
\n\nGraphQL Facebook द्वारा विकसित API के लिए एक क्वेरी भाषा है, जो क्लाइंट को केवल वही डेटा माँगने की अनुमति देती है जिसकी उन्हें आवश्यकता है। REST के विपरीत, जहाँ एंडपॉइंट निश्चित होते हैं, GraphQL सर्वर प्रतिक्रियाओं को लचीले ढंग से बनाने की अनुमति देता है। इस ट्यूटोरियल में, हम Hot Chocolate लाइब्रेरी का उपयोग करके C# में एक पूर्ण GraphQL API बनाएंगे - जो .NET के लिए सबसे लोकप्रिय समाधान है।
\n\nहम इंस्टॉलेशन से लेकर क्वेरी, म्यूटेशन और सब्सक्रिप्शन के कार्यान्वयन तक का सफर तय करेंगे। लेख के अंत तक, आप C# पर GraphQL सर्वर तैनात करने और इसे अपने प्रोजेक्ट्स में एकीकृत करने में सक्षम होंगे।
\n\n1. प्रोजेक्ट की स्थापना और कॉन्फ़िगरेशन
\n\nशुरू करने के लिए, एक नया ASP.NET Core प्रोजेक्ट बनाएँ। सुनिश्चित करें कि आपके पास .NET SDK (संस्करण 6.0 या उच्चतर) स्थापित है। टर्मिनल या कमांड प्रॉम्प्ट खोलें और निम्नलिखित निष्पादित करें:
\n\ndotnet new web -n GraphQLDemo\ncd GraphQLDemo\n\nअब Hot Chocolate पैकेज स्थापित करें:
\n\ndotnet add package HotChocolate.AspNetCore\ndotnet add package HotChocolate.AspNetCore.Playground\n\nस्थापना के बाद, Program.cs फ़ाइल खोलें और सर्वर कॉन्फ़िगर करें:
using Microsoft.AspNetCore.Builder;\nusing Microsoft.Extensions.DependencyInjection;\n\nvar builder = WebApplication.CreateBuilder(args);\n\n// GraphQL सेवाएँ जोड़ें\nbuilder.Services\n .AddGraphQLServer()\n .AddQueryType<Query>();\n\nvar app = builder.Build();\n\n// GraphQL मिडलवेयर कनेक्ट करें\napp.MapGraphQL();\n\n// परीक्षण के लिए Playground जोड़ें\napp.UsePlayground();\n\napp.Run();\n\nअब एक अलग फ़ाइल Query.cs में एक सरल Query क्लास बनाएँ:
public class Query\n{\n public string Hello() => "नमस्ते, GraphQL दुनिया!";\n}\n\nप्रोजेक्ट को dotnet run कमांड से चलाएँ और ब्राउज़र में http://localhost:5000/graphql खोलें। आप Playground इंटरफ़ेस देखेंगे, जहाँ आप क्वेरी निष्पादित कर सकते हैं:
{\n hello\n}\n\nउत्तर: { "data": { "hello": "नमस्ते, GraphQL दुनिया!" } }
2. प्रकार और क्वेरी बनाना
\n\nGraphQL सख्ती से टाइप किया गया है। C# में, हम प्रकारों को परिभाषित करने के लिए क्लास का उपयोग करते हैं। Book और Author मॉडल बनाएँ:
public class Book\n{\n public int Id { get; set; }\n public string Title { get; set; }\n public Author Author { get; set; }\n}\n\npublic class Author\n{\n public int Id { get; set; }\n public string Name { get; set; }\n public List<Book> Books { get; set; }\n}\n\nअब डेटा स्टोरेज जोड़ें (वास्तविक प्रोजेक्ट में डेटाबेस का उपयोग करें) और Query क्लास का विस्तार करें:
public class Query\n{\n private static List<Author> _authors = new()\n {\n new Author\n {\n Id = 1,\n Name = "लियो टॉल्स्टॉय",\n Books = new List<Book>\n {\n new Book { Id = 1, Title = "युद्ध और शांति", Author = null },\n new Book { Id = 2, Title = "अन्ना कैरेनिना", Author = null }\n }\n },\n new Author\n {\n Id = 2,\n Name = "फ्योदोर दोस्तोयेव्स्की",\n Books = new List<Book>\n {\n new Book { Id = 3, Title = "अपराध और दंड", Author = null }\n }\n }\n };\n\n public List<Author> GetAuthors() => _authors;\n\n public Author GetAuthor(int id) => \n _authors.FirstOrDefault(a => a.Id == id);\n \n public List<Book> GetBooks() => \n _authors.SelectMany(a => a.Books).ToList();\n}\n\nध्यान दें: हमने स्पष्ट रूप से प्रकारों को कॉन्फ़िगर नहीं किया - Hot Chocolate स्वचालित रूप से C# क्लास के आधार पर स्कीमा उत्पन्न करता है। अब आप क्वेरी निष्पादित कर सकते हैं:
\n\n{\n authors {\n id\n name\n books {\n title\n }\n }\n}ब्लॉग
पुस्तक अनुशंसाएँ
यह भी पढ़ें