इंटीग्रेशन के तीन स्तंभ: JavaScript की दुनिया में REST, GraphQL और gRPC
\n\nआज JavaScript में डेवलपमेंट का मतलब है डेटा का अंतहीन आदान-प्रदान। आपका ऐप करेंसी रेट लाता है, फॉर्म भेजता है, वीडियो स्ट्रीम करता है या रियल-टाइम में दस्तावेज़ सिंक करता है। और हर बार आपको चुनना होता है कि आपका क्लाइंट सर्वर से कैसे बात करेगा।
\n\nलंबे समय तक REST मानक रहा। यह हथौड़े की तरह सरल है। लेकिन जटिल प्रोजेक्ट्स के लिए सिर्फ हथौड़ा काफी नहीं – चाहिए स्विस आर्मी नाइफ (GraphQL) या फिर जैकहैमर (gRPC)।
\n\nइस लेख में हम JavaScript में API के तीन मुख्य दृष्टिकोणों को समझेंगे। आप असली कोड उदाहरण देखेंगे, हर प्रोटोकॉल की ताकत और कमजोरी जानेंगे, और अपने अगले प्रोजेक्ट के लिए सही टूल चुन पाएंगे। चलिए शुरू करते हैं!
\n\nREST API: क्लासिक जो कभी पुराना नहीं होता
\n\nREST (Representational State Transfer) एक आर्किटेक्चरल स्टाइल है, प्रोटोकॉल नहीं। ज़्यादातर डेवलपर REST का मतलब रिसोर्सेज़ पर HTTP रिक्वेस्ट (GET /users, POST /orders) समझते हैं।
\n\nJavaScript में REST रिक्वेस्ट कैसा दिखता है
\n\nसबसे लोकप्रिय तरीका है नेटिव fetch या axios लाइब्रेरी। यहाँ एक सामान्य GET रिक्वेस्ट है:
// यूज़र्स की लिस्ट लाएं\nconst getUsers = async () => {\n const response = await fetch('https://api.example.com/users');\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n const data = await response.json();\n return data;\n};\n\n// उपयोग का उदाहरण\ntry {\n const users = await getUsers();\n console.log(users);\n} catch (error) {\n console.error('यूज़र्स लोड करने में त्रुटि:', error);\n}\n\n\nJavaScript डेवलपर के लिए REST के फायदे
\n\n- \n
- सरलता और पूर्वानुमान। GET, POST, PUT, DELETE – हर वर्ब का स्पष्ट अर्थ है। \n
- कैशिंग। HTTP कैश बिना किसी सेटअप के काम करता है, जिससे बार-बार की रिक्वेस्ट तेज़ होती हैं। \n
- व्यापक समर्थन। कोई भी बैकएंड किसी भी भाषा में REST दे सकता है। \n
- टूल्स। Postman, Swagger, Insomnia – टेस्टिंग के लिए बड़ा इकोसिस्टम। \n
REST की मुख्य कमियां
\n\n- \n
- Over-fetching (डेटा की अधिकता)। आप /users मांगते हैं, सर्वर सारे फील्ड देता है – पासवर्ड (हैश) और इंटरनल ID भी, जबकि आपको सिर्फ नाम और ईमेल चाहिए। \n
- Under-fetching (डेटा की कमी)। एक यूज़र और उसके आखिरी ऑर्डर पाने के लिए दो रिक्वेस्ट करनी पड़ती हैं: /users/1 और /users/1/orders। \n
- कई एंडपॉइंट। जटिल बिज़नेस लॉजिक दर्जनों URL बनाती है, जिन्हें मेंटेन करना मुश्किल होता है। \n
\n\n\nREST कब चुनें? सरल CRUD ऐप्स, पब्लिक API और उन प्रोजेक्ट्स के लिए आदर्श जहाँ सरलता और कैशिंग ज़रूरी है।
\n
GraphQL: सिर्फ वही मांगें जो चाहिए
\n\nGraphQL एक क्वेरी भाषा और रनटाइम एनवायरनमेंट है, जिसे Facebook (अब Meta) ने बनाया। कई एंडपॉइंट की जगह एक ही endpoint होता है, और क्लाइंट खुद तय करता है कि कौन से फील्ड लेने हैं।
\n\nJavaScript में GraphQL क्वेरी लिखना
\n\nक्लाइंट पर GraphQL के लिए आमतौर पर @apollo/client या urql लाइब्रेरी इस्तेमाल होती है। लेकिन सीधे fetch से भी काम चल सकता है:
// fetch के ज़रिए GraphQL क्वेरी\nconst query = `\n query {\n user(id: "123") {\n name\n email\n posts {\n title\n createdAt\n }\n }\n }\n`;\n\nconst fetchUserWithPosts = async () => {\n const response = await fetch('https://api.example.com/graphql', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ query })\n });\n const result = await response.json();\n return result.data;\n};\n\n// कॉल करें\nfetchUserWithPosts().then(data => console.log(data));\n\n\nफर्क देख रहे हैं