GraphQL क्या है? स्कीमा, क्वेरी और एपीआई निष्पादन

GraphQL क्या है? स्कीमा, क्वेरी और एपीआई निष्पादन

Scrapeless Scraping API कार्य-विशिष्ट इंटरफेस प्रदान करता है जो अनुप्रयोग कार्यप्रवाह के लिए संरचित सार्वजनिक वेब डेटा लौटाता है।

TL;DR

  • GraphQL एक क्वेरी भाषा और एपीआई के लिए निष्पादन प्रणाली है। क्लाइंट एक प्रकार के स्कीमा के खिलाफ फ़ील्ड का चयन करते हैं, और सेवा उस चयन को हल करती है।
  • स्कीमा साझा अनुबंध है। यह ऑब्जेक्ट प्रकार, फ़ील्ड, तर्क, संबंध, प्रवेश बिंदु, और नलता को परिभाषित करता है।
  • एक एंडपॉइंट का अर्थ एक डेटा स्रोत नहीं है। रिजॉल्वर डेटाबेस, सेवाओं, कैश या ग्राफ के पीछे के मौजूदा एपीआई पढ़ सकते हैं।
  • क्लाइंट-आकार के उत्तर कुछ अधिक-प्राप्ति को कम करते हैं। उन्हें क्वेरी गहराई, चौड़ाई, लागत, स्वीकृति, और रिजॉल्वर दक्षता के लिए नियंत्रण की भी आवश्यकता होती है।
  • GraphQL और REST सह-अस्तित्व कर सकते हैं। कई सिस्टम अपने संचालन और क्लाइंट विशेषताओं के अनुसार प्रत्येक का उपयोग करते हैं।

GraphQL परिभाषित किया गया

GraphQL एक ओपन क्वेरी भाषा और निष्पादन मॉडल है जो क्लाइंट और सर्वर के बीच डेटा आवश्यकताओं को वर्णित और पूरा करने के लिए है। एक सेवा एक प्रकार का स्कीमा प्रकाशित करती है। एक क्लाइंट एक ऑपरेशन प्रस्तुत करता है जो उस स्कीमा से फ़ील्ड नामित करता है, और प्रतिक्रिया अनुरोधित चयन को प्रतिबिंबित करती है। GraphQL एक डेटाबेस, संग्रहण इंजन, या परिवहन आवश्यकता नहीं है; यह मौजूदा अनुप्रयोग कोड और डेटा स्रोतों के ऊपर बैठ सकता है।

आधिकारिक GraphQL विनिर्देश भाषा, प्रकार प्रणाली, सत्यापन, और निष्पादन व्यवहार को परिभाषित करता है। उच्च स्तर के ऑपरेशन प्रकार क्वेरी, म्यूटेशन, और सब्सक्रिप्शन हैं जब स्कीमा द्वारा समर्थित होता है। क्वेरी डेटा पढ़ता है, म्यूटेशन परिवर्तन का अनुरोध करता है, और सब्सक्रिप्शन बाद के परिणामों के प्रवाह का प्रतिनिधित्व करता है। एक सेवा तय करती है कि कौन से फ़ील्ड और ऑपरेशन मौजूद हैं।

GraphQL अनुरोध कैसे निष्पादित होता है

GraphQL क्या है को परिभाषित क्रियाओं के अनुक्रम के रूप में मानें न कि एक एकल काले बॉक्स के रूप में। वह अनुक्रम प्रकट करता है कि प्रत्येक इनपुट, आउटपुट, और विफलता का स्वामी कौन सा युक्ति है।

पार्स और सत्यापित करें

सर्वर दस्तावेज़ को पार्स करता है, अनुरोधित ऑपरेशन का चयन करता है, चर मान लागू करता है, और स्कीमा के खिलाफ फ़ील्ड नाम, तर्क, प्रकार और चयन नियम की वैधता की जांच करता है। अमान्य ऑपरेशन फ़ील्ड निष्पादन से पहले विफल हो जाते हैं। यह क्लाइंट को सटीक प्रतिक्रिया देता है और प्रकाशित ग्राफ के बाहर मनमाने फ़ील्ड पहुंच को रोकता है।

फ़ील्ड हल करें

निष्पादन एक मूल फ़ील्ड से शुरू होता है और चयन वृक्ष के माध्यम से जारी रहता है। रिजॉल्वर फ़ंक्शन अनुप्रयोग कोड, डेटाबेस, सेवाओं, कैश या माता-पिता ऑब्जेक्ट से मान प्राप्त करते हैं। निष्पादन इंजन निर्दलीय फ़ील्ड को समानांतर में हल कर सकता है जबकि विनिर्देश द्वारा परिभाषित म्यूटेशन क्रम नियमों को बनाए रखता है।

डेटा और त्रुटियाँ इकट्ठा करें

जब निष्पादन परिणाम उत्पन्न करता है, तो प्रतिक्रिया में एक डेटा प्रविष्टि होती है और इसमें त्रुटियों की प्रविष्टि भी हो सकती है। फ़ील्ड त्रुटियाँ आंशिक डेटा के साथ सह-अस्तित्व कर सकती हैं, जो नलता प्रसार के अधीन है। क्लाइंट को उस आकार को जानबूझकर संभालना चाहिए बजाय इसके कि प्रत्येक प्रतिक्रिया को पूरी तरह से सफल या पूरी तरह से विफल माना जाए।

GraphQL स्कीमा के निर्माण खंड

निम्नलिखित सिद्धांत निर्धारित करते हैं कि GraphQL वास्तव में एक प्रणाली में कैसे व्यवहार करता है। इन्हें अलग-पहचानने से किसी स्वरूप विकल्प को वास्तुकला या सुरक्षा गारंटी के रूप में गलत नहीं माना जाएगा।

सिद्धांतअर्थव्यावहारिक संकेत
ऑब्जेक्ट और फ़ील्डसंस्थाओं और चयन योग्य मूल्यों का वर्णन करते हैं।एक उत्पाद प्रकार जिसमें नाम, मूल्य और विक्रेता फ़ील्ड होते हैं।
स्केलर और एनमपत्ते के मूल्यों का प्रतिनिधित्व करते हैं।स्ट्रिंग, संख्या, बूलियन, पहचानकर्ता, तिथियाँ कस्टम स्केलर्स के माध्यम से या निश्चित विकल्पों के साथ।
तर्क और चरफ़ील्ड चयन को मान्य करें।फिल्टरिंग, पहचानकर्ता, पृष्ठ निर्माण सीमाएँ, और ऑपरेशन इनपुट।
इंटरफ़ेस और संघअव्यक्त प्रकार या वैकल्पिक परिणाम प्रकार व्यक्त करें।एक खोज योग्य नोड कई ठोस ऑब्जेक्ट प्रकारों द्वारा कार्यान्वित।
निर्देशपरिभाषित स्थानों पर व्याख्यात्मक व्यवहार जोड़ता है।शर्तीय समावेश, अमान्य करना, या कार्यान्वयन-विशिष्ट स्कीमा व्यवहार।

जहां GraphQL अपनी जटिलता अर्जित करता है

GraphQL क्या है उत्पाद के व्यवहार को केवल ठोस संचालन के माध्यम से प्रभावित करता है। निम्नलिखित मामले दिखाते हैं कि कौन-सी क्षमता महत्वपूर्ण है और क्यों एक पार्श्व दृष्टिकोण भिन्नता से कार्य कर सकता है।

संयुक्त इंटरफेस

एक स्क्रीन एक घोषित चयन में कई संबंधित वस्तु रूपों का अनुरोध कर सकती है बजाय इसके कि कई ग्राहक-विशिष्ट कॉल समन्वयित किए जाएं।

कई ग्राहक उत्पाद

वेब, मोबाइल, भागीदार, और आंतरिक ग्राहक एक प्रकार के डोमेन ग्राफ को साझा करते हुए विभिन्न क्षेत्रों का चयन कर सकते हैं।

स्कीमा-नेतृत्व उपकरण

प्रकार की जानकारी प्रमाणीकरण, दस्तावेज़ अन्वेषकों, संपादक पूर्णता, कोड उत्पादन, और परिवर्तन विश्लेषण का समर्थन करती है।

बैकेंड समेकन

रिजॉल्वर एक ग्राफ के पीछे मौजूदा सेवाओं को एकत्र कर सकता है जो ग्राहक-उन्मुख शर्तों में संबंध प्रस्तुत करता है।

GraphQL APIs के लिए उत्पादन चिंताएँ

स्कीमा को स्थिर डोमेन अवधारणाओं के चारों ओर मॉडल करें बजाय इसके कि वर्तमान डेटाबेस तालिकाएँ या एक स्क्रीन। नलता एक संगतता निर्णय है: एक नल क्षेत्र को गैर-नल में बदलना एक मूल्य उत्पन्न नहीं कर पाने पर ग्राहकों को तोड़ सकता है। पेजिनेशन को एक दस्तावेज़ीकृत संबंध या निरंतरता मॉडल का उपयोग करना चाहिए जो रिकॉर्ड बदलते समय स्थिर रहता है।

निष्पादन से पहले क्वेरी कार्य को नियंत्रित करें। गहराई केवल एक पूर्ण लागत मॉडल नहीं है क्योंकि एक उथला क्षेत्र एक बड़ी संग्रहणीयता वापस कर सकता है और एक गहरा पथ सस्ता हो सकता है। सीमित पेजिनेशन, क्षेत्र-स्तरीय लागत या जटिलता नियम, संचालन अनुमति सूचियाँ जहाँ उपयुक्त हों, निष्पादन समय की सीमाएँ, और वहनीयता का उपयोग करें जो कार्य को एक संचालन और कॉलर को श्रेय देती है।

रिजॉल्वर वृद्धि को रोकें। एक क्षेत्र रिजॉल्वर जो प्रत्येक माता-पिता वस्तु के लिए एक डाउनस्ट्रीम क्वेरी जारी करता है, एक कॉम्पैक्ट ग्राहक क्वेरी को कई बैकेंड कॉल में बदल सकता है। तब कॉलेस्ट में अनुमति दें जहाँ सेमांटिक्स की अनुमति हो, रिजॉल्वर समय को उपकरण करें, और क्षेत्र और वस्तु सीमा पर प्रमाणीकरण का मूल्यांकन करें। आधिकारिक GraphQL सुरक्षा दिशा-निर्देश विश्वसनीय दस्तावेज़, मांग नियंत्रण, पैनिज़ेशन, और स्कीमा सुरक्षा को कवर करता है।

GraphQL की भ्रांतियाँ और विफलता मोड

  • यह मानते हुए कि एक अनुरोध कम बैकेंड लागत का मतलब है। एक कॉम्पैक्ट दस्तावेज महंगे रिजॉल्वर पेड़ और अंत बिंदु के पीछे बड़े फैन-आउट को ट्रिगर कर सकता है।
  • संग्रहण मॉडल को सीधे उजागर करना। डेटाबेस-आकार की स्कीमा ग्राहकों को कार्यान्वयन विवरणों से जोड़ती है और डोमेन विकास को कठिन बनाती है।
  • केवल HTTP स्थिति को परिणाम के रूप में मान लेना। निष्पादन त्रुटियाँ आंशिक डेटा के बगल में दिखाई दे सकती हैं, इसलिए ग्राहकों को GraphQL-संवेदनशील हैंडलिंग की आवश्यकता होती है।
  • ओपरेशन देखने की योग्यता छोड़ना। एक एकल अंत बिंदु कार्यभार भिन्नताओं को छुपाता है जब तक कि मैट्रिक्स संचालन नाम, क्षेत्र, कॉलर, और लागत की पहचान नहीं करती।
  • अधिकार मॉडल के रूप में अंतर्दृष्टि का उपयोग करना। स्कीमा खोज्यता और एक क्षेत्र तक पहुँचने की अनुमति अलग नियंत्रण हैं।

डेटा और स्वचालन कार्यप्रवाह में GraphQL

एक GraphQL कलेक्टर को सेवा द्वारा अनुमेय स्कीमा खोज के साथ आरंभ करना चाहिए और दस्तावेजीकृत संचालन। इसे नामित संचालन भेजना चाहिए, अविश्वसनीय मूल्यों के साथ पाठ को निर्माण करने के बजाय परिवर्तनीय का उपयोग करना चाहिए, केवल आवश्यक क्षेत्रों का अनुरोध करना चाहिए, और सेवा के पेजिनेशन मॉडल का पालन करना चाहिए। स्थिर पहचानकर्ताओं को स्थायी रूप से रखें और आंशिक डेटा हैंडलिंग को स्पष्ट बनाएं।

स्कीमा में परिवर्तन स्वचालित समीक्षा के लिए योग्य हैं। ऐडिटिव क्षेत्रों को आमतौर पर सुरक्षित माना जाता है क्योंकि ग्राहक स्पष्ट रूप से क्षेत्रों का चयन करते हैं, लेकिन क्षेत्रों को हटाना, प्रकारों को संकुचित करना, नलता को बदलना, या तर्क व्यवहार को बदलना उपभोक्ताओं को तोड़ सकता है। हटाने से पहले अप्रयुक्त क्षेत्र के उपयोग को ट्रैक करें और उम्मीदवार स्कीमा के खिलाफ संग्रहीत संचालन का परीक्षण करें।

GraphQL एक वेब अधिग्रहण पाइपलाइन के नीचे बैठ सकता है। सार्वजनिक पृष्ठ डेटा को एक समर्पित परत द्वारा एकत्रित और सामान्यीकृत किया जा सकता है, फिर आंतरिक ग्राहकों के लिए एक प्रकार के ग्राफ के माध्यम से उजागर किया जा सकता है। ग्राफ को सामान्यीकृत डोमेन और इसकी उत्पत्ति का वर्णन करना चाहिए बजाय इसके कि चयनकर्ताओं, पृष्ठ लेआउट, या ब्राउज़र-सेशन विवरणों को लीक किया जाए।

GraphQL क्या है समीक्षा चेकलिस्ट

इन जाँचों का उपयोग करें GraphQL क्या है परिभाषा को कार्यान्वयन सिद्धांत में बदलने के लिए ताकि एक डेवलपर, ऑपरेटर, या समीक्षक इसे पुनिरचना कर सके।

  1. सीमा को फिर से बताएं। GraphQL क्या है के लिए, कॉलर, प्रदाता, पथ, और उस सटीक घटना की पहचान करें जो पूर्ण परिणाम को चिह्नित करता है।
  2. केंद्रीय दावा की पुष्टि करें। इस बयान की पुष्टि करें इसके कार्यान्वयन और इसकी दस्तावेज़ के साथ: GraphQL APIs के लिए एक क्वेरी भाषा और निष्पादन प्रणाली है। ग्राहक एक प्रकार की स्कीमा के खिलाफ क्षेत्रों का चयन करते हैं, और सेवा उस चयन का समाधान करती है।
  3. यांत्रिकी को ट्रेस करें। पार्स और मान्य, क्षेत्रों को हल करें, डेटा और त्रुटियाँ इकट्ठा करें, और रिकॉर्ड करें कि प्रत्येक चरण का मालिक कौन है।
  4. सबसे निकटतम अंतर की जांच करें। डॉक्यूमेंट करें कि वस्तु और क्षेत्र का क्या अर्थ है “संस्थाओं और चयन योग्य मूल्यों का वर्णन करें।इस प्रणाली में।
  5. एक प्रतिनिधि उपयोग मामले का परीक्षण करें। यथार्थवादी डेटा, स्थान, मात्रा, और अनुमति सीमा के साथ संयुक्त इंटरफेस का उपयोग करें।
  6. एक ज्ञात गलती से सुरक्षित रहें। “यह मानते हुए कि एक अनुरोध कम बैकेंड लागत का मतलब है।” की समीक्षा करें और एक स्वीकार्यता जांच जोड़ें जो इसे पकड़ता है।
  7. कार्यभार को सीमित करें। क्या है GraphQL के लिए विषयानुकूल सीमाएँ स्थापित करें, जिसमें.payload, समवर्तीता, कार्यान्वयन समय, और संग्रहीत आउटपुट शामिल हैं जहाँ वे लागू होते हैं।
  8. निर्णय को रिकॉर्ड करें। व्याख्या करें कि क्यों What Is GraphQL इस सीमा में फिट बैठता है और उस साक्ष्य का नाम दें जो बाद में एक अलग दृष्टिकोण को औचित्य प्रदान करेगा।

निष्कर्ष

What Is GraphQL को डिजाइन के परीक्षण योग्य भाग का वर्णन करना चाहिए न कि पड़ोसी व्यवहार के लिए ढीले लेबल के रूप में कार्य करना चाहिए। समीक्षा को इस केंद्रीय निर्णय को बनाए रखना चाहिए: GraphQL एपीआई के लिए एक प्रश्न भाषा और कार्यान्वयन प्रणाली है। ग्राहक एक प्रकार की स्कीमा के खिलाफ फ़ील्ड का चयन करते हैं, और सेवा उस चयन को हल करती है। इसे यह भी सुनिश्चित करना चाहिए कि एक अनुरोध का अर्थ कम बैकेंड लागत नहीं है। और What Is GraphQL का उपयोग प्रलेखित नीति के भीतर किया जाना चाहिए।

क्या आप अपने वेब डेटा कार्यप्रवाह का निर्माण करने के लिए तैयार हैं?

ऊपर वर्णित सत्यापन और भंडारण प्रथाओं के लिए एक मापी What Is GraphQL अधिग्रहण या एकीकरण चरण को कनेक्ट करें।

आज ही साइन अप करें और पाएं $5 फ्री क्रेडिटकोई क्रेडिट कार्ड आवश्यक नहीं.

अपने $5 क्रेडिट का दावा करें →

अक्सर पूछे जाने वाले प्रश्न

क्या GraphQL एक डेटाबेस है?

नहीं। GraphQL एपीआई के लिए एक प्रश्न भाषा और कार्यान्वयन प्रणाली है। रिज़ॉल्वर्स डेटाबेस, सेवाओं, कैश, फ़ाइलों, या अन्य एपीआई से मान प्राप्त कर सकते हैं, लेकिन GraphQL भंडारण इंजन को निर्दिष्ट नहीं करता है।

क्या GraphQL हमेशा एक एंडपॉइंट का उपयोग करता है?

GraphQL सेवाएँ आमतौर पर एक HTTP एंडपॉइंट पर संचालन स्वीकार करती हैं, लेकिन विशिष्टता एकल URL या HTTP की आवश्यकता नहीं है। परिभाषात्मक अनुबंध स्कीमा और कार्यान्वयन प्रसंग है।

क्या GraphQL केवल पढ़ने के लिए है?

नहीं। GraphQL पढ़ने के लिए प्रश्न संचालन, अनुरोधित परिवर्तनों के लिए उत्परिवर्तन संचालन, और एक सेवा द्वारा समर्थित होने पर धाराओं के लिए सदस्यता संचालन को परिभाषित करता है। स्कीमा उपलब्ध फ़ील्ड निर्धारित करता है।

क्या GraphQL REST का स्थान लेता है?

नहीं। GraphQL और REST अंतरफलक डिज़ाइन को विभिन्न तरीकों से हल करते हैं। GraphQL प्रकार के क्लाइंट-चयनित ग्राफ़ के लिए फायदेमंद होता है, जबकि REST संसाधन-उन्मुख HTTP इंटरएक्शन और कैश अर्थशास्त्र के लिए उपयुक्त होता है। एक प्रणाली दोनों को उजागर कर सकती है।

संदर्भ