GraphQL का .NET प्लेटफॉर्म पर परिचय
GraphQL API के लिए एक क्वेरी भाषा है, जो क्लाइंट को केवल वही डेटा प्राप्त करने की क्षमता प्रदान करती है जिसकी उन्हें वास्तव में आवश्यकता होती है। REST के विपरीत, जहां प्रतिक्रिया की संरचना सर्वर द्वारा कठोर रूप से परिभाषित होती है, GraphQL लचीले ढंग से क्वेरी बनाने की अनुमति देता है। इस ट्यूटोरियल में हम Hot Chocolate फ्रेमवर्क का उपयोग करके C# में एक पूर्ण GraphQL API बनाएंगे, जो .NET के लिए सबसे लोकप्रिय समाधान है।
हम इंस्टॉलेशन से लेकर म्यूटेशन और सब्सक्रिप्शन के साथ जटिल क्वेरी बनाने तक की यात्रा करेंगे। यह लेख उन डेवलपर्स के लिए है जो C# और ASP.NET Core की मूल बातों से परिचित हैं।
1. प्रोजेक्ट सेटअप और डिपेंडेंसी इंस्टॉलेशन
शुरू करने के लिए, एक नया ASP.NET Core प्रोजेक्ट बनाएं। आप Visual Studio, Rider या कमांड लाइन का उपयोग कर सकते हैं।
dotnet new web -n GraphQLDemocd GraphQLDemoअब Hot Chocolate पैकेज इंस्टॉल करें - .NET में GraphQL के साथ काम करने का मुख्य उपकरण:
dotnet add package HotChocolate.AspNetCoreGraphQL IDE (Banana Cake Pop) के माध्यम से क्वेरी के साथ काम करने के लिए अतिरिक्त रूप से इंस्टॉल करें:
dotnet add package HotChocolate.AspNetCore.Playground1.1 Program.cs की बेसिक कॉन्फ़िगरेशन
Program.cs फ़ाइल खोलें और सर्विसेज़ कॉन्फ़िगर करें:
var builder = WebApplication.CreateBuilder(args);
builder.Services .AddGraphQLServer() .AddQueryType<Query>();
var app = builder.Build();
app.MapGraphQL();
app.Run();ध्यान दें: हम Query को रजिस्टर कर रहे हैं - यह डेटा पढ़ने के लिए हमारा रूट टाइप है। फिलहाल यह खाली है, लेकिन हम इसे भर देंगे।
2. डेटा मॉडल और पहली क्वेरी बनाना
GraphQL टाइप्स के साथ काम करता है। एक सरल Book मॉडल बनाएं:
public class Book{ public int Id { get; set; } public string Title { get; set; } public string Author { get; set; } public int Year { get; set; }}अब Query क्लास को परिभाषित करें जो डेटा लौटाएगा:
public class Query{ private static List<Book> _books = new() { new Book { Id = 1, Title = "1984", Author = "George Orwell", Year = 1949 }, new Book { Id = 2, Title = "Clean Code", Author = "Robert C. Martin", Year = 2008 } };
public IQueryable<Book> GetBooks() => _books.AsQueryable();
public Book? GetBookById(int id) => _books.FirstOrDefault(b => b.Id == id);}एप्लिकेशन चलाएं और http://localhost:5000/graphql खोलें। आपको Banana Cake Pop दिखाई देगा - क्वेरी परीक्षण के लिए एक अंतर्निहित IDE। इसे निष्पादित करने का प्रयास करें:
{ books { title author }}आपको केवल वे फ़ील्ड प्राप्त होंगे जिन्हें आपने अनुरोध किया था - यही GraphQL की ताकत है।
3. डेटा बदलने के लिए म्यूटेशन
म्यूटेशन REST में POST/PUT/DELETE के समान हैं। वे सर्वर पर डेटा बदलने की अनुमति देते हैं। नई किताबें जोड़ने की क्षमता जोड़ें।
3.1 इनपुट टाइप परिभाषित करना
म्यूटेशन के इनपुट डेटा के लिए एक क्लास बनाएं:
public class AddBookInput{ public string Title { get; set; } public string Author { get; set; } public int Year { get; set; }}3.2 म्यूटेशन का कार्यान्वयन
Mutation क्लास जोड़ें:
public class Mutation{ private static List<Book> _books = new() { new Book { Id = 1, Title = "1984", Author = "George Orwell", Year = 1949 }, new Book { Id = 2, Title = "Clean Code", Author = "Robert C. Martin", Year = 2008 } };
public Book AddBook(AddBookInput input) { var newBook = new Book { Id = _books.Max(b => b.Id) + 1, Title = input.Title, Author = input.Author, Year = input.Year }; _books.Add(newBook); return newBook; }
```