शुरुआती लोगों के लिए ग्राफ़क्यूएल ट्यूटोरियल: क्या है, विशेषताएं और उदाहरण
ग्राफ़क्यूएल क्या है?
GraphQL एक एप्लीकेशन लेयर सर्वर-साइड तकनीक है जिसे फेसबुक द्वारा मौजूदा डेटा के साथ क्वेरी निष्पादित करने के लिए विकसित किया गया है। ग्राफक्यूएल रेस्टफुल एपीआई कॉल को ऑप्टिमाइज़ कर सकता है। यह आपके डेटा को प्राप्त करने और अपडेट करने का एक घोषणात्मक तरीका देता है। ग्राफक्यूएल आपको सर्वर से क्लाइंट तक डेटा लोड करने में मदद करता है। यह प्रोग्रामर को उन अनुरोधों के प्रकारों को चुनने में सक्षम बनाता है जिन्हें वे करना चाहते हैं।
ग्राफ़क्यूएल का उपयोग क्यों करें?
ग्राफ़क्यूएल का उपयोग करने के निम्नलिखित कारण हैं:
- यह मानव-पठनीय क्वेरी प्रदान करता है।
- ग्राफ़क्यूएल में, कई डेटाबेस से निपटना बहुत आसान है।
- यह माइक्रोसर्विसेज और जटिल प्रणालियों के लिए उपयुक्त है।
- आप एकल API कॉल से डेटा प्राप्त कर सकते हैं.
- यह आपको क्वेरी बैचिंग और कैशिंग में मदद करता है।
- आपको अधिक या कम लाभ की समस्याओं का सामना नहीं करना पड़ता।
- आपकी आवश्यकताओं के अनुरूप अनुरोध तैयार करना।
- यह आपको उचित प्रारूप में स्कीमा खोजने में मदद करता है।
- ग्राफ़क्यूएल स्वचालित रूप से दस्तावेज़ीकरण को एपीआई परिवर्तनों के साथ समन्वयित रखता है।
- एपीआई का विकास संस्करणीकरण के बिना भी संभव है।
- ग्राफ़क्यूएल फ़ील्ड का उपयोग कई क्वेरीज़ में किया जाता है जिन्हें पुनः उपयोग के लिए उच्चतर घटक स्तर पर साझा किया जा सकता है।
- आप चुन सकते हैं कि कौन से फ़ंक्शन प्रदर्शित करने हैं और वे कैसे काम करते हैं।
- इसका उपयोग तीव्र अनुप्रयोग प्रोटोटाइपिंग के लिए किया जा सकता है।
ग्राफ़क्यूएल के अनुप्रयोग
ग्राफ़क्यूएल के महत्वपूर्ण अनुप्रयोग इस प्रकार हैं:
- यह रिले और अन्य क्लाइंट फ्रेमवर्क प्रदान करता है
- ग्राफ़क्यूएल आपको मोबाइल ऐप के प्रदर्शन को बेहतर बनाने में मदद करता है।
- यह सर्वर-साइड क्लाउड सेवा को कम करने और क्लाइंट-साइड, नेटवर्क उपयोग को कम करने के लिए ओवर फेचिंग समस्या को कम कर सकता है।
- इसका उपयोग तब किया जा सकता है जब क्लाइंट अनुप्रयोग को यह निर्दिष्ट करना हो कि लंबे क्वेरी प्रारूप में कौन से फ़ील्ड की आवश्यकता है।
- जब आपको अपने पुराने या मौजूदा API में कार्यक्षमता जोड़नी हो तो GraphQL का पूर्ण उपयोग किया जा सकता है।
- इसका उपयोग तब किया जाता है जब आपको जटिल API को सरल बनाना होता है।
- मिक्स और मैश फ़ेसेड पैटर्न, जो सामान्यतः ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में प्रयोग किया जाता है।
- जब आपको एक से अधिक स्थानों से डेटा को एक सुविधाजनक API में एकत्रित करना हो।
- आप उपयोगकर्ता की आवश्यकताओं के आधार पर प्रतिक्रिया संरचना निर्दिष्ट करने के लिए मौजूदा API पर GraphQL को एक अमूर्तता के रूप में उपयोग कर सकते हैं।
GraphQl सीखने से पहले आपको क्या सीखने की आवश्यकता है?
यह ग्राफ़क्यूएल ट्यूटोरियल पर आधारित है व्यक्त और NodeJSइसलिए, आप NodeJS की बुनियादी समझ के साथ GraphQL को बहुत आसानी से सीख सकते हैं।
ग्राफ़क्यूएल प्रमुख घटक
अब इस GraphQL ट्यूटोरियल में, आइए GraphQL के प्रमुख घटकों को जानें:
जैसा कि उपरोक्त चित्र में दिखाया गया है, ग्राफ़क्यूएल के तीन प्रमुख घटक हैं: 1) क्वेरी, 2) रिज़ॉल्वर, और 3) स्कीमा।
प्रश्न
क्वेरी क्लाइंट मशीन एप्लीकेशन द्वारा किया गया एक API अनुरोध है। यह ऑग्मेंट्स का समर्थन करता है और ऐरे की ओर इशारा करता है। क्वेरी का उपयोग मानों को पढ़ने या लाने के लिए किया जाता है।
प्रश्न के भाग:
क्वेरी के महत्वपूर्ण भाग निम्नलिखित हैं
- खेत:
फ़ील्ड केवल यह संकेत देता है कि हम सर्वर से विशेष जानकारी मांग रहे हैं। ग्राफ़क्यूएल क्वेरी में फ़ील्ड का एक ग्राफ़क्यूएल उदाहरण नीचे दिया गया है।
query { team { id name } } "data": { "team":[ { "id": 1, "name": "Avengers" } , … ] } }
उपरोक्त ग्राफ़क्यूएल उदाहरण में, हम सर्वर से टीम नामक फ़ील्ड और उसके उप-फ़ील्ड जैसे आईडी और नाम के लिए पूछते हैं। ग्राफ़क्यूएल सर्वर हमारे द्वारा पूछे गए डेटा को लौटाता है।
- तर्क
In बाकी, हम URL सेगमेंट और क्वेरी पैरामीटर के रूप में केवल एक ही सेट के तर्क पास कर सकते हैं। किसी विशेष प्रोफ़ाइल को प्राप्त करने के लिए, एक सामान्य REST कॉल निम्न जैसा दिखाई देगा:
GET /api'team?id=2 Content-Type: application JSON { "id": 2, "name": "Justice League." }
का समाधान
रिज़ॉल्वर ग्राफ़क्यूएल ऑपरेशन को डेटा में बदलने के लिए दिशा-निर्देश प्रदान करते हैं। वे रिज़ॉल्वर फ़ंक्शन को परिभाषित करके क्वेरी को डेटा में बदल देते हैं।
यह सर्वर को प्रक्रिया के साथ-साथ किसी विशिष्ट फ़ील्ड के अनुसार डेटा लाने के लिए स्थान भी दिखाता है। रिज़ॉल्वर डेटाबेस स्कीमा और API स्कीमा को भी अलग करता है। अलग की गई जानकारी डेटाबेस से प्राप्त सामग्री को संशोधित करने में मदद करती है।
स्कीमा
ग्राफ़क्यूएल स्कीमा ग्राफ़क्यूएल कार्यान्वयन का केंद्र है। यह उन क्लाइंट के लिए उपलब्ध कार्यक्षमता का वर्णन करता है जो इससे जुड़ रहे हैं।
ग्राफ़क्यूएल की विशेषताएं
ग्राफ़क्यूएल की महत्वपूर्ण विशेषताएं इस प्रकार हैं:
- यह घोषणात्मक क्वेरी भाषा प्रदान करता है, जो अनिवार्य नहीं है।
- यह पदानुक्रमित एवं उत्पाद-केन्द्रित है।
- ग्राफ़क्यूएल दृढ़ता से टाइप किया गया है। इसका मतलब है कि क्वेरीज़ को किसी विशेष सिस्टम के संदर्भ में निष्पादित किया जाता है।
- ग्राफ़क्यूएल में क्वेरीज़ को क्लाइंट में एनकोड किया जाता है, सर्वर में नहीं।
- इसमें OSI मॉडल की एप्लीकेशन लेयर की सभी विशेषताएं मौजूद हैं।
ग्राफ़क्यूएल क्लाइंट
ग्राफ़क्यूएल क्लाइंट एक कोड है जो किसी प्रासंगिक ग्राफ़क्यूएल सर्वर को POST अनुरोध करता है। आप सीधे ग्राफ़क्यूएल एपीआई क्वेरी कर सकते हैं, लेकिन अच्छा तरीका रिले का उपयोग करके एक समर्पित क्लाइंट लाइब्रेरी का लाभ उठाना है।
इस Javaस्क्रिप्ट लाइब्रेरी को फेसबुक द्वारा ग्राफक्यूएल के साथ रिएक्ट एप्लिकेशन बनाने के लिए विकसित किया गया है। ग्राफक्यूएल क्लाइंट ड्रूपल जैसा सीएमएस, सिंगल पेज एप्लिकेशन, मोबाइल एप्लिकेशन आदि हो सकते हैं।
ग्राफ़क्यूएल सर्वर
ग्राफ़क्यूएल सर्वर ग्राफ़क्यूएल के विनिर्देश का सर्वर साइड कार्यान्वयन है। यह आपके डेटा को ग्राफ़क्यूएल एपीआई के रूप में दर्शाता है, जिसे आपका क्लाइंट प्रोग्राम क्वेरी कर सकता है डेटाबेस.
ग्राफ़क्यूएल गेटवे
गेटवे एक माइक्रोसर्विस पैटर्न है जहाँ आप अन्य बैकएंड सेवाओं से निपटने के लिए एक अलग सेवा बना सकते हैं। यह व्यावहारिक दस्तावेज प्रदान करता है और एक ही अनुरोध के साथ एक से अधिक स्रोतों से डेटा एकत्र करने का एक सुविधाजनक तरीका देता है।
GraphQL में वेरिएबल क्या है?
A ग्राफ़क्यूएल में चर क्लाइंट क्वेरी से डायनेमिक मानों को अलग करने और क्वेरी को एक अद्वितीय शब्दकोश के रूप में पास करने के लिए उपयोग किया जाता है। GraphQL में वैरिएबल का उपयोग क्लाइंट द्वारा अलग-अलग तर्कों के साथ लिखी गई क्वेरी या म्यूटेशन को फिर से उपयोग करने के लिए भी किया जा सकता है। ग्राफ़क्यूएल में, आप क्वेरी स्ट्रिंग में सीधे डायनेमिक तर्क नहीं दे सकते। इसका कारण यह है कि क्लाइंट-साइड कोड को प्रोग्राम चलाने के समय क्वेरी स्ट्रिंग को डायनेमिक रूप से मैनिपुलेट करने की आवश्यकता होती है।
GraphQL में क्वेरी से डायनेमिक मानों को फ़ैक्टराइज़ करने का एक अच्छा तरीका है। यह उन्हें एक अलग शब्दकोश के रूप में पास करता है। इन मानों को चर के रूप में जाना जाता है। जब भी हम चर के साथ काम करते हैं, तो हमें निम्नलिखित तीन काम करने की आवश्यकता होती है:
- क्वेरी में स्थिर मान को चर नाम से प्रतिस्थापित करें.
- चर नाम को GraphQL क्वेरी द्वारा स्वीकार किए जाने वाले चरों में से एक के रूप में घोषित करें।
- चरों के परिवहन-विशिष्ट शब्दकोष में मान पास करें।
यह सब मिलकर कुछ इस प्रकार दिखता है:
query HeroNameAndFriends($episode: Episode) { hero(episode: $episode) { name friends { name } } } { "episode": "JEDI" } { "data": { "hero": { "name": "R2-D2", "friends": [ { "name": "Luke Skywalker" }, { "name": "Han Solo" }, { "name": "Leia Organa" } ] } } }
जैसा कि आप उपरोक्त GraphQL उदाहरण में देख सकते हैं, हमने एक नई क्वेरी बनाने की आवश्यकता के अलावा बस एक अलग चर पारित किया है।
उत्परिवर्तन (म्यूटेशन) क्या है?
म्यूटेशन GraphQL में डेटासेट को बदलने का एक तरीका है। यह डेटा स्टोर में डेटा को संशोधित करता है और एक मान लौटाता है। म्यूटेशन आपको डेटा डालने, अपडेट करने या हटाने में मदद करते हैं। आम तौर पर, म्यूटेशन को स्कीमा भाग के रूप में परिभाषित किया जाता है।
ग्राफ़क्यूएल म्यूटेशन डिज़ाइन करते समय ध्यान रखने योग्य बातें
ग्राफ़क्यूएल डिज़ाइन करते समय महत्वपूर्ण बिंदु इस प्रकार हैं:
- नामकरण: सबसे पहले, आपको अपने उत्परिवर्तन क्रिया का नाम देना होगा। फिर संज्ञा, या यदि लागू हो तो “ऑब्जेक्ट”। उत्परिवर्तन का नामकरण करते समय कैमलकेस का उपयोग करें।
- विशिष्टता: आपको उत्परिवर्तन को यथासंभव विशिष्ट बनाना होगा। उत्परिवर्तन को उपयोगकर्ता द्वारा की गई अर्थपूर्ण क्रियाओं का प्रतिनिधित्व करना चाहिए।
- इनपुट ऑब्जेक्ट: क्लाइंट पर म्यूटेशन निष्पादित करने के लिए एक तर्क के रूप में एक, अद्वितीय, आवश्यक, इनपुट ऑब्जेक्ट प्रकार का उपयोग करें।
- विशिष्ट पेलोड प्रकार: आपको हर म्यूटेशन के लिए एक अद्वितीय पेलोड प्रकार का उपयोग करना चाहिए। आप म्यूटेशन आउटपुट को उस विशेष पेलोड प्रकार में फ़ील्ड के रूप में भी जोड़ सकते हैं।
- घोंसला बनाना: जहाँ भी संभव हो, अपने म्यूटेशन में नेस्टिंग का उपयोग करें। यह आपको GraphQL API का पूर्ण उपयोग करने की अनुमति देता है।
ग्राफ़क्यूएल और रेस्ट के बीच अंतर
निम्न तालिका में महत्वपूर्ण अंतर दर्शाया गया है ग्राफ़क्यूएल और रेस्ट.
GraphQL | बाकी |
---|---|
यह ग्राहक-संचालित वास्तुकला का अनुसरण करता है। | यह सर्वर-संचालित वास्तुकला का अनुसरण करता है। |
ग्राफ़क्यूएल को स्कीमा के रूप में व्यवस्थित किया जा सकता है। | REST को समापन बिंदुओं के आधार पर व्यवस्थित किया जा सकता है। |
ग्राफ़क्यूएल एक बढ़ता हुआ समुदाय है। | REST एक बहुत बड़ा समुदाय है। |
ग्राफ़क्यूएल में विकास की गति तेज़ है। | REST में विकास की गति धीमी है। |
ग्राफ़क्यूएल में सीखने की प्रक्रिया कठिन है। | REST में सीखने की प्रक्रिया मध्यम है। |
पहचान इस बात से अलग है कि आप उसे कैसे प्राप्त करते हैं। | REST में आप जिस एंडपॉइंट को कॉल करते हैं वह किसी विशेष ऑब्जेक्ट की पहचान है। |
ग्राफ़क्यूएल में, सर्वर उपलब्ध संसाधनों का निर्धारण करता है। | संसाधन का आकार और आकृति REST में सर्वर द्वारा निर्धारित की जाती है। |
ग्राफ़क्यूएल सभी प्लेटफार्मों पर उच्च स्थिरता प्रदान करता है। | सभी प्लेटफार्मों पर एकरूपता प्राप्त करना कठिन है। |
ग्राफ़क्यूएल के नुकसान
ग्राफ़क्यूएल के नुकसान इस प्रकार हैं:
- युवा पारिस्थितिकी तंत्र
- बैकएंड भाग पर संसाधनों की कमी।
- जटिल ऐप के लिए डिज़ाइन पैटर्न गायब है.
- जटिल प्रश्नों के साथ प्रदर्शन संबंधी समस्याएं.
- छोटे अनुप्रयोगों के लिए अतिशयता
- ग्राफ़क्यूएल HTTP कैशिंग विधियों पर निर्भर नहीं करता है जो अनुरोध सामग्री को संग्रहीत करने में सक्षम बनाता है।
- ग्राफ़क्यूएल फ़ाइलों को नहीं समझता है। इसलिए, इसमें फ़ाइल अपलोड करने की सुविधा शामिल नहीं है।
- ग्राफक्यूएल के साथ, स्कीमा डेफिनिशन लैंग्वेज सीखने जैसी बहुत सी पूर्व-विकास शिक्षा प्राप्त करने के लिए तैयार रहें।
ग्राफ़क्यूएल द्वारा उपयोग किए जाने वाले ओपन सोर्स ऐप्स और टूल
ग्राफ़क्यूएल द्वारा उपयोग किए जाने वाले महत्वपूर्ण ओपन सोर्स ऐप्स और टूल इस प्रकार हैं:
- Gatsby: गैस्टबी एक ऐसा एप्लीकेशन है जो ग्राफक्यूएल द्वारा संचालित है जो एक से अधिक ग्राफक्यूएल एपीआई स्रोत से प्राप्त डेटा का उपयोग कर सकता है। आप इसका उपयोग स्थिर और क्लाइंट-आधारित रिएक्ट एप्लीकेशन विकसित करने के लिए कर सकते हैं।
- ग्रेफाइक: यह एक आईडी है जो ब्राउज़र के साथ एकीकृत होती है और ग्राफ़क्यूएल के एपीआई के साथ भी इंटरैक्ट करती है। ग्राफ़ीक्यूएल में शामिल कुछ फ़ंक्शन म्यूटेशन, डेटा क्वेरीइंग और ऑटोकम्प्लीट क्वेरीज़ हैं।
- ग्राफक्यूएल खेल का मैदान: यह एक शक्तिशाली IDE है जिसमें म्यूटेशन, सत्यापन, ग्राफक्यूएल क्वेरी, सदस्यता आदि को संभालने के लिए एक अंतर्निहित संपादक है। डेवलपर स्कीमा की संरचना को देखने के लिए इस IDE का उपयोग कर सकता है।
- Prisma: प्रिज्मा एक डेटाबेस अमूर्त परत है जो आपके डेटाबेस को CRUD (क्रिएट, रीड, अपडेट और डिलीट) ऑपरेशन के साथ ग्राफक्यूएल एपीआई में बदल देती है।
- बिट: यह एक ओपन-सोर्स टूल और प्लेटफ़ॉर्म है जो पुन: प्रयोज्य कोड को घटकों में परिवर्तित करता है। डेवलपर्स विभिन्न परियोजनाओं को साझा करने और विकसित करने के लिए उनका उपयोग कर सकते हैं।
सारांश
- ग्राफक्यूएल एक एप्लीकेशन लेयर सर्वर-साइड तकनीक है जिसे फेसबुक द्वारा मौजूदा डेटा के साथ क्वेरीज़ निष्पादित करने के लिए विकसित किया गया है।
- आप एकल API कॉल से डेटा प्राप्त करने के लिए GraphQL का उपयोग कर सकते हैं।
- ग्राफ़क्यूएल आपको मोबाइल ऐप के प्रदर्शन को बेहतर बनाने में मदद करता है।
- महत्वपूर्ण ग्राफ़क्यूएल क्वेरी घटक हैं: 1) क्वेरी, 2) रिज़ॉल्वर, 3) स्कीमा।
- ग्राफ़क्यूएल दृढ़ता से टाइप किया गया है। इसका मतलब है कि क्वेरीज़ को किसी विशेष सिस्टम के संदर्भ में निष्पादित किया जाता है।
- ग्राफ़क्यूएल क्लाइंट एक कोड है जो प्रासंगिक ग्राफ़क्यूएल सर्वर को POST अनुरोध करता है।
- ग्राफ़क्यूएल सर्वर ग्राफ़क्यूएल विनिर्देश का सर्वर साइड कार्यान्वयन हैं।
- गेटवे एक माइक्रोसर्विस पैटर्न है जहां आप अन्य बैकएंड सेवाओं के साथ तालमेल बिठाने के लिए एक अलग सेवा का निर्माण कर सकते हैं।
- ग्राफ़क्यूएल में क्वेरी से गतिशील मानों को फैक्टराइज़ करने का एक अच्छा तरीका है।
- म्यूटेशन, ग्राफ़क्यूएल में डेटासेट को बदलने का एक तरीका है।
- ग्राफ़क्यूएल डिज़ाइन करते समय महत्वपूर्ण बिंदु हैं: 1) नामकरण, 2) विशिष्टता, 3) इनपुट ऑब्जेक्ट अद्वितीय पेलोड प्रकार, और 4) नेस्टिंग।
- ग्राफक्यूएल को स्कीमा के रूप में व्यवस्थित किया जा सकता है, जबकि रेस्ट को समापन बिंदुओं के रूप में व्यवस्थित किया जा सकता है।
- ग्राफ़क्यूएल का नुकसान यह है कि इसमें बैकएंड भाग पर संसाधनों की कमी है।