अनुप्रयोगों के निर्माण और वितरण के लिए कई ओपन-सोर्स आर्किटेक्चरल मानक मौजूद हैं। REST (रिप्रेसेंटेशनल स्टेट ट्रांसफर), SOAP (सिंपल ऑब्जेक्ट एक्सेस प्रोटोकॉल), RPC (रिमोट प्रोसीजरल कॉल), और ग्राफक्यूएल एपीआई सबसे लोकप्रिय हैं।
RESTful API सबसे अधिक उपयोग किया जाने वाला API वास्तुशिल्प मानक है। यदि आपने कई समापन बिंदुओं के साथ जटिल RESTful API लिखा है, तो आपको शायद यह एहसास हो गया होगा कि वे कितने जटिल हो सकते हैं। यह विशेष रूप से सच है अगर समापन बिंदुओं के बीच केवल मामूली अंतर हैं।
आप डेटा लाने में भी समस्याओं का सामना कर सकते हैं क्योंकि विशिष्ट डेटा का चयन करने के लिए RESTful API पर्याप्त लचीले नहीं हैं। ग्राफक्यूएल रेस्टफुल एपीआई की इन समस्याओं को हल करता है।
ग्राफक्यूएल क्या है?
ग्राफ़क्यूएल (ग्राफ़ क्वेरी लैंग्वेज) एपीआई बनाने के लिए एक क्वेरी भाषा और रनटाइम है। डेटा की खपत के लिए कई समापन बिंदुओं वाले REST API के विपरीत, ग्राफ़िकल API में एक प्रवेश बिंदु होता है। आप प्रश्नों में इसका वर्णन करके विशिष्ट डेटा प्राप्त कर सकते हैं।
ग्राफक्यूएल विनिर्देश क्वेरी भाषा को परिभाषित करता है और ग्राफ़िकल सर्वर कैसे काम करता है। आप Python से लेकर सर्वर-साइड भाषाओं में GraphQL API का निर्माण और उपभोग कर सकते हैं
जावास्क्रिप्ट, और कोई भी भाषा जो HTTP का समर्थन करती है।मेटा ने 2012 में HTTP पर निर्माण के लिए REST के विकल्प के रूप में ग्राफकॉल बनाया। उन्होंने 2015 में एक ओपन-सोर्स मानक के रूप में ग्राफकॉल जारी किया। आज, ग्राफक्लाइन फाउंडेशन ग्राफक्लाइन विनिर्देश के विकास की देखरेख करता है।
ग्राफक्लाइन काफी नया है, कम गोद लेने के साथ, और इसका उपयोग करने के लिए छिपी हुई लागतें हैं। ग्राफक्यूएल एपीआई का निर्माण अनावश्यक रूप से जटिल हो सकता है, विशेष रूप से कुछ समापन बिंदुओं वाली छोटी परियोजनाओं के लिए।
साथ ही, अनुरोध की स्थिति की परवाह किए बिना, सभी ग्राफक्यूएल अनुरोध अंततः 200 का एक स्थिति कोड लौटाते हैं।
ग्राफक्यूएल कैसे काम करता है?
भिन्न REST, जो संसाधन-उन्मुख है, ग्राफ़िकल के लिए आवश्यक है कि आप डेटा के साथ इंटरैक्ट करने के लिए डेटा को एक ग्राफ़ के रूप में सोचें। आप डेटा की संरचना निर्दिष्ट कर सकते हैं, और विनिर्देश HTTP पर एपीआई के साथ इंटरैक्ट करने के लिए एक मजबूत क्वेरी इंटरफ़ेस प्रदान करता है। आप के आधार पर विभिन्न सुविधाओं का उपयोग करने में सक्षम होंगे ग्राफक्यूएल पैकेज या लाइब्रेरी आप उपयोग करना चुनते हैं।
ग्राफक्यूएल स्कीमा में ऑब्जेक्ट प्रकार शामिल होते हैं जो अनुरोध योग्य ऑब्जेक्ट और उसके उपलब्ध फ़ील्ड को परिभाषित करते हैं। एपीआई प्रश्नों और म्यूटेशन पर, ग्राफक्लाइन पैकेज प्रश्नों को मान्य करता है और निर्दिष्ट हैंडलर फ़ंक्शंस (रिज़ॉल्वर) के आधार पर प्रश्नों को निष्पादित करता है।
आपको ग्राफक्यूएल का उपयोग क्यों करना चाहिए?
REST एक उपयोग में आसान मानक है, और अधिकांश प्रोग्रामिंग भाषाओं में RESTful API को तेजी से बनाने के लिए उपकरण हैं। हालाँकि, RESTful API के निर्माण और उपभोग के साथ कई समस्याएँ हैं।
यहाँ REST के कुछ मुद्दे हैं जो डेवलपर्स को कुछ उपयोग के मामलों के लिए ग्राफक्यूएल पसंद करते हैं।
अक्षम डेटा प्राप्त करना
रेस्टफुल एपीआई एंडपॉइंट के विनिर्देशों के आधार पर डेटा रिले करते हैं। वे एंडपॉइंट के हैंडलर फ़ंक्शन में हार्ड कोड किए गए डेटा से परे डेटा पुनर्प्राप्त करने के लिए पर्याप्त लचीले नहीं हैं।
मान लीजिए कि एक समापन बिंदु कॉल पर डेटा की एक सूची लौटाता है, और आपको फ़ील्ड के लिए मान या मानदंड निर्दिष्ट करने की आवश्यकता होती है। उस स्थिति में, डेवलपर को डेटा वापस करने के लिए एक समापन बिंदु बनाना होगा और व्यावसायिक तर्क को परिभाषित करना होगा। आप मूल्यवान संसाधन को मैन्युअल रूप से पार्स कर सकते हैं, जिसमें अंततः अधिक समय लगता है।
ग्राफकलाइन अक्षम डेटा लाने की समस्या को हल करता है क्योंकि आप मानदंडों और विशिष्टताओं के आधार पर एपीआई को लचीले ढंग से डेटा वापस करने के लिए क्वेरी कर सकते हैं।
ग्राफक्यूएल एपीआई इंटरैक्टिव हैं; आप उस डेटा को निर्दिष्ट कर सकते हैं जिसे आपको एक आसान, पठनीय सिंटैक्स में पुनर्प्राप्त करने की आवश्यकता है।
{
उपयोगकर्ता (जहां: {उम्र: {_eq: "89"}}) {
नाम
विद्यालय(कहाँ: {जीवित: {_eq: सच}}) {
जैव
राष्ट्रीयता
}
}
}
उपरोक्त ग्राफ़िकल क्वेरी प्रश्न a उपयोगकर्ता प्रविष्टियों के लिए स्कीमा जहां आयु क्षेत्र 89 है। क्वेरी में प्रविष्टियों के लिए एक एम्बेडेड क्वेरी है जहाँ जीवित क्षेत्र का मूल्यांकन करता है सत्य. यह स्कीमा से नाम, जैव और राष्ट्रीयता फ़ील्ड लौटाता है।
शीघ्र विकास
REST का उपयोग करने की तुलना में ग्राफक्यूएल एपीआई का निर्माण और उपभोग करना आसान है, खासकर जब परियोजना का आकार बढ़ता है। विकास के चरण के दौरान, आपको उतने रूट और हैंडलर फ़ंक्शंस विकसित करने की ज़रूरत नहीं है जितनी आप RESTful API विकसित करते समय करेंगे। ग्राफक्यूएल एपीआई का उपभोग रेस्टफुल एपीआई जितना थकाऊ नहीं है।
REST में, अलग-अलग समापन बिंदु अलग-अलग संसाधनों तक पहुँच प्रदान करते हैं, ग्राफ़क्यूएल के विपरीत, जहाँ एक एकल समापन बिंदु है। यह लचीलापन और प्रदर्शन देता है, और प्रश्न विभिन्न रिज़ॉल्वर कार्यों को कॉल कर सकते हैं।
ग्राफक्यूएल स्कीमा डेफिनिशन लैंग्वेज
ग्राफक्यूएल स्कीमा डेफिनिशन लैंग्वेज (एसडीएल) ग्राफक्यूएल सेवाओं के लिए स्कीमा निर्दिष्ट करती है।
ग्राफक्यूएल एसडीएल सिंटैक्स को पढ़ना और समझना आसान है। आप फ़ाइल में अपनी स्कीमा की संरचना निर्दिष्ट करेंगे .graphql या .graphqls विस्तार।
प्रकार इंसान {
नाम: डोरी!
आयु: इंट!
}इनपुट ऐडह्यूमन {
नाम: डोरी!
आयु: इंट!
}प्रकार उत्परिवर्तन {
CreateHuman (इनपुट: AddHuman!): मानव!
डिलीट ह्यूमन (आईडी: इंट!): डोरी!
अपडेट ह्यूमन (आईडी: इंट!): डोरी!
}
प्रकार जिज्ञासा {
GetHuman (id: Int!): मानव!
GetHuman: [इंसान!]!
}
उपरोक्त ग्राफक्यूएल कोड एक ग्राफक्यूएल एपीआई के लिए स्कीमा है जो अनुरोधों के लिए एपीआई की संरचना को परिभाषित करता है। स्कीमा एपीआई के लिए सीआरयूडी कार्यक्षमता को परिभाषित करता है।
क्लाइंट साइड पर, स्कीमा की संरचना और क्लाइंट के डेटा या ऑपरेशन के आधार पर, क्लाइंट निष्पादित कर सकता है जिज्ञासा (आरईएसटी में प्राप्त करें या हटाएं) या ए उत्परिवर्तन (पुट या पोस्ट)।
यहाँ क्वेरी करने का एक उदाहरण दिया गया है इंसान स्कीमा।
प्रश्न मानव {
नाम
आयु
}
ऊपर दी गई क्वेरी मानव स्कीमा को वापस कर देगी नाम और आयु फील्ड डेटा।
ग्राफ़िकल म्यूटेशन में प्रश्नों के विपरीत काफी भिन्न सिंटैक्स होता है। यहाँ एक उदाहरण म्यूटेशन ऑपरेशन है इंसान स्कीमा।
उत्परिवर्तन {
CreateHuman (इनपुट: {नाम:"आदमी", उम्र: 1000000000000000,}) {
नाम
आयु
}
}
उत्परिवर्तन कोड इनपुट नाम और आयु क्लाइंट को फ़ील्ड और फ़ील्ड से डेटा लौटाता है।
जब आप अपना ग्राफक्यूएल एपीआई बना रहे हों तो आपको दृढ़ता के लिए डेटा स्टोर की आवश्यकता होगी। REST और अधिकांश HTTP-आधारित वेब आर्किटेक्चर की तरह, ग्राफकलाइन स्टेटलेस है, और आप अपने ऐप के लिए किसी भी डेटा स्टोर या डेटाबेस का उपयोग कर सकते हैं।
एक ग्राफक्यूएल एपीआई का निर्माण
ग्राफक्यूएल एक विनिर्देश है, और आप सबसे लोकप्रिय सर्वर-साइड भाषाओं में ग्राफक्यूएल बना सकते हैं। आपको अपनी परियोजना के लिए आवश्यक सुविधाओं के साथ एक लाइब्रेरी ढूंढनी होगी।
ग्राफ़िकल लाइब्रेरी चुनते समय, आप एक सुविधा संपन्न लाइब्रेरी का उपयोग करना चाहते हैं जो सभी ग्राफ़कॉल प्रकार और संचालन का समर्थन करती है। अधिकांश पुस्तकालय या तो स्कीमा-प्रथम या कोड-प्रथम दृष्टिकोण अपनाते हैं। पूर्व में, आप एक ग्राफक्यूएल स्कीमा को परिभाषित करते हैं, और पुस्तकालय रिज़ॉल्वर और बॉयलरप्लेट कोड उत्पन्न करता है। उत्तरार्द्ध के लिए, आप स्कीमा को परिभाषित किए बिना रिज़ॉल्वर को हार्ड-कोड करते हैं।
ग्राफक्यूएल को अपनाया जा रहा है
ग्राफक्यूएल की स्थापना के बाद से, डेवलपर्स और कंपनियों ने इसके उपयोग को आसान बनाने के लिए उपकरण जारी किए हैं। ये छोटी और मध्यम परियोजनाओं के विकास के समय को कम कर सकते हैं।
अधिक जानने के लिए आप ओपन-सोर्स ग्राफक्यूएल क्लाइंट्स, ग्राफक्यूएल डॉक्यूमेंटेशन और इसके स्पेसिफिकेशन की जांच कर सकते हैं।