रेखांकन - परिचय
ग्राफकॉल एक ओपन सोर्स सर्वर-साइड तकनीक है जिसे फेसबुक ने RESTful API कॉल को ऑप्टिमाइज़ करने के लिए विकसित किया था। यह एक निष्पादन इंजन और एक डेटा क्वेरी भाषा है। इस अध्याय में, हम GraphQL का उपयोग करने के लाभों के बारे में चर्चा करते हैं।
क्यों ग्राफ़िकल
रेस्टफुल एपीआई स्पष्ट और अच्छी तरह से संरचित संसाधन-उन्मुख दृष्टिकोण का पालन करते हैं। हालाँकि, जब डेटा अधिक जटिल हो जाता है, तो मार्ग अधिक लंबे हो जाते हैं। कभी-कभी एकल अनुरोध के साथ डेटा प्राप्त करना संभव नहीं होता है। यह वह जगह है जहाँ GraphQL काम आता है। ग्राफकॉक डेटा को ट्रैवर्सिंग, पुनः प्राप्त करने और संशोधित करने के लिए शक्तिशाली क्वेरी सिंटैक्स के साथ एक ग्राफ के रूप में डेटा को संरचित करता है।
GraphQL क्वेरी भाषा का उपयोग करने के निम्नलिखित फायदे हैं -
जो आप चाहते हैं, उसे मांगें - और उसे प्राप्त करें
अपने एपीआई के लिए एक GraphQL क्वेरी भेजें और वास्तव में आपको क्या चाहिए। रेखांकन क्वेश्चन हमेशा अनुमानित परिणाम देते हैं। GraphQL का उपयोग करने वाले अनुप्रयोग तेज़ और स्थिर हैं। बाकी सेवाओं के विपरीत, ये एप्लिकेशन उन डेटा को प्रतिबंधित कर सकते हैं जिन्हें सर्वर से प्राप्त किया जाना चाहिए।
निम्नलिखित उदाहरण आपको इसे बेहतर समझने में मदद करेंगे -
आइए एक व्यावसायिक वस्तु पर विचार करें , जिसमें स्टूडेंट आईडी, फर्स्टनाम , लास्टनेम और कॉलेजनाम के साथ स्टूडेंट है । मान लीजिए कि एक मोबाइल एप्लिकेशन को केवल पहला नाम और आईडी लाना है । यदि हम / api / v1 / छात्रों की तरह एक REST समापन बिंदु डिजाइन करते हैं , तो यह एक छात्र वस्तु के लिए सभी क्षेत्रों के लिए डेटा प्राप्त करेगा । इसका मतलब है, डेटा Restful सेवा द्वारा प्राप्त किया गया है। इस समस्या को GraphQL का उपयोग करके हल किया जा सकता है।
नीचे दी गई ग्राफ़कॉल क्वेरी पर विचार करें -
{
students {
id
firstName
}
}
यह केवल आईडी और फर्स्टनाम फ़ील्ड के लिए मान लौटाएगा। क्वेरी छात्र ऑब्जेक्ट की अन्य विशेषताओं के लिए मान नहीं लाएगा। ऊपर वर्णित क्वेरी की प्रतिक्रिया नीचे दी गई है -
{
"data": {
"students": [
{
"id": "S1001",
"firstName": "Mohtashim"
},
{
"id": "S1002",
"firstName": "Kannan"
}
]
}
}
एक ही अनुरोध में कई संसाधन प्राप्त करें
ग्राफक्लिअर क्वेरीज़ संबंधित व्यावसायिक वस्तुओं को आसानी से प्राप्त करने में मदद करती हैं, जबकि विशिष्ट REST API को कई URL से लोड करने की आवश्यकता होती है। GraphQL एपीआई एक एकल अनुरोध में आपके आवेदन की जरूरत के सभी डेटा प्राप्त करते हैं। ग्राफलाइन का उपयोग करने वाले एप्लिकेशन धीमी मोबाइल नेटवर्क कनेक्शन पर भी त्वरित हो सकते हैं।
आइए एक और व्यावसायिक वस्तु पर विचार करें, जिस कॉलेज में विशेषताएँ हैं: नाम और स्थान। छात्र व्यापार वस्तु कॉलेज वस्तु के साथ एक संघ संबंध नहीं है। यदि हम छात्रों और उनके कॉलेज के विवरण प्राप्त करने के लिए REST API का उपयोग करते हैं, तो हम / api / v1 / छात्रों और / api / v1 / कॉलेजों जैसे सर्वर से दो अनुरोध करेंगे । इससे प्रत्येक अनुरोध के साथ डेटा प्राप्त करना होगा। तो मोबाइल एप्लिकेशन को वांछित डेटा प्राप्त करने के लिए सर्वर पर कई कॉल करने के लिए मजबूर किया जाता है।
हालाँकि, मोबाइल एप्लिकेशन, ग्राफ़िकल का उपयोग करके एक ही अनुरोध में छात्र और कॉलेज दोनों वस्तुओं के लिए विवरण प्राप्त कर सकता है।
डेटा लाने के लिए एक ग्राफक्लाइन क्वेरी निम्नलिखित है -
{
students{
id
firstName
lastName
college{
name
location
}
}
}
उपरोक्त क्वेरी के आउटपुट में ठीक वैसे ही फ़ील्ड हैं जिन्हें हमने नीचे दिखाए अनुसार अनुरोध किया है -
{
"data": {
"students": [
{
"id": "S1001",
"firstName": "Mohtashim",
"lastName": "Mohammad",
"college": {
"name": "CUSAT",
"location": "Kerala"
}
},
{
"id": "S1002",
"firstName": "Kannan",
"lastName": "Sudhakaran",
"college": {
"name": "AMU",
"location": "Uttar Pradesh"
}
},
{
"id": "S1003",
"firstName": "Kiran",
"lastName": "Panigrahi",
"college": {
"name": "AMU",
"location": "Uttar Pradesh"
}
}
]
}
}
बताएं कि एक प्रकार की प्रणाली के साथ क्या संभव है
ग्राफकॉइन दृढ़ता से टाइप किया गया है और प्रश्न फ़ील्ड और उनके संबंधित डेटा प्रकारों पर आधारित हैं। यदि कोई ग्राफ़क्यूएल क्वेरी में टाइप बेमेल है, तो सर्वर एप्लिकेशन स्पष्ट और सहायक त्रुटि संदेश लौटाते हैं। यह ग्राहक अनुप्रयोगों द्वारा आसानी से डिबगिंग और बग का आसानी से पता लगाने में मदद करता है। GraphQL क्लाइंट साइड लाइब्रेरी भी प्रदान करता है जो स्पष्ट डेटा रूपांतरण और पार्सिंग को कम करने में मदद कर सकता है।
छात्र और कॉलेज डेटा प्रकारों का एक उदाहरण नीचे दिया गया है -
type Query {
students:[Student]
}
type Student {
id:ID!
firstName:String
lastName:String
fullName:String
college:College
}
type College {
id:ID!
name:String
location:String
rating:Float
students:[Student]
}
शक्तिशाली डेवलपर टूल के साथ तेज़ी से आगे बढ़ें
GraphQL प्रलेखन और परीक्षण प्रश्नों के लिए समृद्ध डेवलपर उपकरण प्रदान करता है। GraphiQL एक उत्कृष्ट उपकरण है जो क्वेरी और इसके स्कीमा के प्रलेखन उत्पन्न करता है। यह क्वेरी के निर्माण के दौरान ग्राफकॉल एपीआई और बुद्धिमान कोड पूरा करने की क्षमता का परीक्षण करने के लिए एक क्वेरी संपादक भी देता है।