परिचय: API — डरने की नहीं, बल्कि काम आने वाली चीज़ है
\n\nसोचिए, आप पिज़्ज़ा ऑर्डर कर रहे हैं। आप रेस्तरां में फ़ोन करते हैं, पता और टॉपिंग बताते हैं — और 30 मिनट में पिज़्ज़ा आपके दरवाज़े पर। प्रोग्रामिंग में API बिल्कुल ऐसे ही काम करता है: यह वह 'फ़ोन कॉल' है जिसके ज़रिए एक प्रोग्राम दूसरे से बात करता है। बस आवाज़ की जगह HTTP-रिक्वेस्ट होती हैं, और पिज़्ज़ा की जगह डेटा।
\n\nC# डेवलपमेंट की दुनिया में API एक बुनियादी चीज़ है। कोई भी आधुनिक प्रोजेक्ट, चाहे वह वेब ऐप हो, मोबाइल बैकएंड हो या कॉर्पोरेट सर्विस, किसी न किसी बाहरी सर्विस को कॉल करता है। और यहाँ सबसे बड़ा सवाल आता है: कौन सा प्रोटोकॉल चुनें? REST, GraphQL या gRPC? हर एक अपनी जगह बेहतरीन है, लेकिन हर एक अपने काम के लिए।
\n\nइस लेख में हम C# में API के साथ काम करने को असली उदाहरणों के साथ समझेंगे। आप जानेंगे कि HTTP-रिक्वेस्ट कैसे भेजें, C# को GraphQL और gRPC से कैसे जोड़ें, और सबसे ज़रूरी — कब क्या इस्तेमाल करना चाहिए। चलिए शुरू करते हैं!
\n\n\n\n
1. C# में REST API: क्लासिक जो कभी पुराना नहीं होता
\n\nREST (Representational State Transfer) एक आर्किटेक्चरल स्टाइल है जो कई सालों से डी-फैक्टो स्टैंडर्ड बना हुआ है। सरल, समझने में आसान, HTTP पर काम करता है। अगर आपने कभी GET या POST रिक्वेस्ट भेजने वाला कोड लिखा है — तो आप REST के साथ काम कर चुके हैं।
\n\nC# में REST-रिक्वेस्ट कैसे भेजें
\n\nC# में REST के साथ काम करने के लिए सबसे ज़्यादा HttpClient क्लास का इस्तेमाल होता है। यह .NET में बिल्ट-इन है और सब कुछ कर सकता है: साधारण GET-रिक्वेस्ट से लेकर JSON बॉडी वाले जटिल POST तक।
C# में REST API को कॉल करने का एक सामान्य उदाहरण:
\n\nusing System;\nusing System.Net.Http;\nusing System.Threading.Tasks;\n\nclass Program\n{\n static async Task Main(string[] args)\n {\n using HttpClient client = new HttpClient();\n client.BaseAddress = new Uri("https://api.example.com/");\n \n HttpResponseMessage response = await client.GetAsync("users/1");\n if (response.IsSuccessStatusCode)\n {\n string json = await response.Content.ReadAsStringAsync();\n Console.WriteLine(json);\n }\n }\n}\n\n\nछोटा और स्पष्ट। HttpClient लंबे समय तक चलता है, इसलिए इसे आमतौर पर एक बार बनाया जाता है और फिर से इस्तेमाल किया जाता है (असली प्रोजेक्ट्स में DI-कंटेनर के ज़रिए)।
REST कब चुनें
\n- \n
- आप वेब या मोबाइल ऐप के लिए पब्लिक API बना रहे हैं। \n
- क्लाइंट ब्राउज़र, मोबाइल डिवाइस या IoT हैं। \n
- आपको सादगी और HTTP लेवल पर कैशिंग चाहिए। \n
REST की कमियाँ: डेटा की अतिरिक्तता (अक्सर ज़रूरत से ज़्यादा डेटा आता है) और N+1 रिक्वेस्ट की समस्या, जहाँ संबंधित डेटा पाने के लिए कई कॉल करने पड़ते हैं।
\n\n\n\n
2. C# में GraphQL: सिर्फ़ वही माँगें जो चाहिए
\n\nGraphQL एक क्वेरी लैंग्वेज है जिसे Facebook ने बनाया है। इसकी सबसे बड़ी खासियत: क्लाइंट खुद तय करता है कि उसे कौन से फ़ील्ड चाहिए। कोई अतिरिक्त जानकारी नहीं, कोई दर्जनों एंडपॉइंट नहीं — एक रिक्वेस्ट, एक जवाब।
\n\nC# से GraphQL-रिक्वेस्ट भेजना
\n\nC# में GraphQL के साथ काम करने के लिए सीधे HttpClient का इस्तेमाल कर सकते हैं, लेकिन GraphQL.Client लाइब्रेरी (NuGet पैकेज GraphQL.Client) ज़्यादा सुविधाजनक है।
GraphQL API को कॉल करने का उदाहरण:
\n\nusing System;\nusing System.Threading.Tasks;\nusing GraphQL;\nusing GraphQL.Client.Http;\nusing GraphQL.Client.Serializer.Newtonsoft;\n\nclass Program\n{\n static async Task Main(string[] args)\n {\n using var client = new GraphQLHttpClient("https://api.example.com/graphql", new NewtonsoftJsonSerializer());\n\n var request = new GraphQLRequest\n {\n Query = @"\n {\n user(id: 1) {\n name\n email\n posts {\n title\n }\n }\n }"\n };\n\n var response = await client.SendQueryAsync<dynamic