पाठ 24 / 24
GraphQL और gRPC
दो अन्य शैलियाँ, और वे साधारण REST से कब बेहतर हैं।
GraphQL: एक एंडपॉइंट, सटीक फ़ील्ड
GraphQL एक ही एंडपॉइंट उजागर करता है जहाँ क्लाइंट एक ही क्वेरी में संबंधित रिसोर्स में बिल्कुल वे फ़ील्ड बताता है जो उसे चाहिए — यह REST की ओवर-फ़ेचिंग (अनुपयोगी फ़ील्ड) और अंडर-फ़ेचिंग (कई राउंड-ट्रिप चाहिए) को ठीक करता है, कीमत पर एक अधिक जटिल सर्वर और कैशिंग की कहानी।
gRPC: बाइनरी, टाइप्ड, तेज़
gRPC JSON टेक्स्ट के बजाय कॉम्पैक्ट बाइनरी Protocol Buffers का उपयोग करते हुए HTTP/2 पर टाइप्ड फ़ंक्शन कॉल करता है — (डी)सिरियलाइज़ करने में बहुत तेज़, सख़्त स्कीमा और स्ट्रीमिंग बिल्ट-इन के साथ। यह REST से कम ब्राउज़र-अनुकूल और कम इंसानी-पठनीय है।
हर एक को कब चुनें
REST: पब्लिक API, सरल रिसोर्स, व्यापक टूलिंग और कैशिंग सपोर्ट। GraphQL: समृद्ध UI (मोबाइल/वेब) जो हर स्क्रीन की अलग ज़रूरत के साथ कई स्रोतों से नेस्टेड डेटा खींचते हैं। gRPC: आपके अपने इंफ़्रास्ट्रक्चर के अंदर सेवा-से-सेवा कॉल जहाँ गति और सख़्त कॉन्ट्रैक्ट ब्राउज़र एक्सेस से ज़्यादा मायने रखते हैं।
त्वरित जाँच: एक मोबाइल ऐप स्क्रीन को एक राउंड-ट्रिप में यूज़र की प्रोफ़ाइल, उनके अंतिम 3 ऑर्डर और अनरीड नोटिफ़िकेशन गिनती चाहिए, कम से कम अतिरिक्त डेटा के साथ। सबसे उपयुक्त क्या है?
- तीन अलग REST कॉल
- बिल्कुल उन्हीं फ़ील्ड को नाम देने वाली एक GraphQL क्वेरी
- एक gRPC स्ट्रीमिंग कॉल
Answer
बिल्कुल उन्हीं फ़ील्ड को नाम देने वाली एक GraphQL क्वेरी — GraphQL बिल्कुल इसी के लिए बना है: एक क्वेरी जो कई रिसोर्स में ठीक ज़रूरी फ़ील्ड खींचती है, न अतिरिक्त राउंड-ट्रिप न अनुपयोगी डेटा।