ग्राफ़ क्वेरी लैंग्वेज (ग्राफ़क्यूएल) वेब पर संचार के लिए एचटीटीपी-आधारित क्लाइंट-सर्वर आर्किटेक्चर, ग्राफ़क्यूएल एपीआई के साथ बातचीत करने के लिए एक भाषा और विनिर्देश है।

फेसबुक ने REST वास्तु मानक के विकल्प के रूप में ग्राफक्लाइन जारी किया। ग्राफकलाइन अधिकांश मुद्दों को स्टेटलेस और कैशेबल तरीके से REST के साथ संबोधित करता है। यह एक सरल और सहज सिंटैक्स प्रदान करता है जो अपेक्षित आउटपुट (एस) या इनपुट (एस) का वर्णन करता है, और एपीआई अनुरोध से मेल खाने वाले डेटा को रिले करता है।

चूंकि ग्राफक्यूएल एक विनिर्देश है, आप गो सहित किसी भी सर्वर-साइड प्रोग्रामिंग भाषा में ग्राफक्यूएल एपीआई का निर्माण और उपभोग कर सकते हैं।

गो में ग्राफक्यूएल एपीआई के साथ शुरुआत करना

ग्राफक्यूएल एचटीटीपी आर्किटेक्चर पर आधारित है, और गो अपने बिल्ट-इन में HTTP कार्यक्षमता प्रदान करता है एचटीटीपी पैकेट।

आप उपयोग कर सकते हैं एचटीटीपी पैकेज को गो में रेस्टफुल एपीआई का उपभोग करें, अन्य सुविधाओं के बीच। ग्राफक्यूएल के लिए, आप ग्राफक्यूएल एपीआई सर्वर के साथ क्वेरी और म्यूटेशन कर सकते हैं एचटीटीपी पैकेज और अन्य अंतर्निर्मित पैकेज।

instagram viewer

ग्राफक्यूएल क्लाइंट पैकेज जैसे मशीनबॉक्स या शूरकूल ग्राफक्यूएल एपीआई के साथ बातचीत करने की प्रक्रिया को और भी आसान बनाएं।

आप उपयोग कर सकते हैं एचटीटीपी पैकेज बिना किसी निर्भरता के एक ग्राफक्यूएल एपीआई के साथ बातचीत करने के लिए। आरंभ करने के लिए इन पैकेजों को अपनी गो फ़ाइल में आयात करें:

आयात (
"बाइट्स"
"एन्कोडिंग/जेसन"
"एफएमटी"
"आईओ/आईओयूटिल"
"नेट/एचटीटीपी"
"समय"
)

आप उपयोग करेंगे बाइट्स पैकेज अनुरोध के लिए एक नया बफर बनाने के लिए और json JSON अनुरोध निकाय के मानचित्र को मार्शल करने के लिए पैकेज। आप उपयोग कर सकते हैं ioutil प्रतिक्रिया शरीर को पढ़ने के लिए, और समय अनुरोध के लिए समय सीमा निर्धारित करने के लिए पैकेज।

गो के साथ ग्राफकलाइन एपीआई को क्वेरी करना

ऐसे कई मुफ्त सार्वजनिक ग्राफक्यूएल एपीआई हैं जिन्हें आप क्वेरी कर सकते हैं और अपने अनुप्रयोगों में एकीकृत कर सकते हैं। इस लेख के लिए, आप दुनिया भर के देशों के डेटा को क्वेरी करने के लिए Apollo GraphQL के कंट्रीज API को क्वेरी करेंगे।

सभी ग्राफकॉल ऑपरेशन आमतौर पर POST अनुरोध होते हैं क्योंकि उनके पास एक पेलोड (अनुरोध निकाय) होना चाहिए। अधिकांश ग्राफ़कॉल एपीआई सामग्री प्रकार के रूप में JSON अनुरोध निकाय को स्वीकार करते हैं, और गो JSON के साथ काम करने के लिए मैप्स और स्ट्रक्चर्स का उपयोग करने के लिए कार्यक्षमता प्रदान करता है.

एपीआई को क्वेरी करने के लिए आपको ग्राफक्यूएल स्कीमा की संरचना का अध्ययन करना होगा। क्वेरी एक नियमित ग्राफक्यूएल क्वेरी के समान होगी, सिवाय इसके कि ऑपरेशन (क्वेरी या म्यूटेशन) कुंजी है, और डेटा मानचित्र का मूल्य है।

यहां बताया गया है कि आप JSON मानचित्र उदाहरण कैसे घोषित कर सकते हैं कि आप अनुरोध के लिए JSON में मार्शल करेंगे।

jsonMapInstance := नक्शा[डोरी]डोरी {
"जिज्ञासा": `
{
देश {
नाम,
फ़ोन,
मुद्रा,
कोड,
इमोजी
}
}
`,
}

jsonMapInstance चर अनुरोध के शरीर के लिए नक्शा उदाहरण है। मान उस क्वेरी डेटा की एक स्ट्रिंग है जिसकी आप API से अपेक्षा कर रहे हैं। इस मामले में, एपीआई से आप जिस क्वेरी डेटा की अपेक्षा करेंगे देशों स्कीमा हैं नाम, फ़ोन, मुद्रा, कोड, और इमोजी खेत।

आप उपयोग कर सकते हैं मार्शल की विधि json जेएसओएन को नक्शा उदाहरण एन्कोड करने के लिए पैकेज। मार्शल विधि एन्कोडेड JSON और एन्कोडिंग समस्या वाले मामलों के लिए एक त्रुटि लौटाती है।

jsonResult, गलती: = json. मार्शल (jsonMapInstance)

अगर गलती! = शून्य {
fmt. प्रिंटफ ("JSON उदाहरण% v को मार्शल करने में त्रुटि हुई", गलती)
}

एक बार जब आप मानचित्र को JSON में एन्कोड कर लेते हैं, तो आप API को POST अनुरोध भेज सकते हैं। आप के साथ एक नया अनुरोध उदाहरण बना सकते हैं नई विनती विधि, जो अनुरोध प्रकार, URL और JSON बफ़र लेती है।

नई विनती विधि एक अनुरोध उदाहरण देता है। आपको एपीआई के विनिर्देशों के आधार पर सामग्री प्रकार सेट करना होगा। आप HTTP अनुरोधों के लिए सामग्री प्रकार सेट कर सकते हैं तय करना की विधि हैडर आपके अनुरोध उदाहरण की विधि।

नया अनुरोध, त्रुटि: = http. NewRequest("POST", "https://countries.trevorblades.com/graphql", बाइट्स। न्यूबफ़र (jsonResult))
नई विनती। शीर्ष लेख। सेट ("सामग्री-प्रकार", "एप्लिकेशन/जेसन")

आप अपने अनुरोध के लिए एक साधारण HTTP क्लाइंट बना सकते हैं ग्राहक HTTP पैकेज की विधि। ग्राहक विधि आपको अपने अनुरोध के लिए समय सीमा निर्धारित करने की भी अनुमति देती है समय पैकेट।


क्लाइंट := &http. क्लाइंट {टाइमआउट: समय। दूसरा * 5}
प्रतिक्रिया, त्रुटि: = क्लाइंट। करना (नया अनुरोध)

अगर गलती! = शून्य {
fmt. प्रिंटफ ("अनुरोध% v निष्पादित करने में त्रुटि हुई", त्रुटि)
}

आपके द्वारा HTTP क्लाइंट घोषित करने के बाद, अपने API अनुरोध को इसके साथ निष्पादित करें करना तरीका। करना विधि अनुरोध के उदाहरण को स्वीकार करती है और प्रतिक्रिया और एक त्रुटि लौटाती है।

आप एपीआई अनुरोध की प्रतिक्रिया के साथ पढ़ सकते हैं ioutil पैकेज सब पढ़ें तरीका। यह एक आउटपुट स्ट्रीम लेता है और डेटा का एक बाइट स्लाइस एक त्रुटि के साथ लौटाता है जिसे आप संभाल सकते हैं।

प्रतिक्रिया डेटा, त्रुटि: = ioutil. सभी पढ़ें (प्रतिक्रिया। शरीर)

अगर गलती! = शून्य {
fmt. प्रिंटफ ("डेटा रीड एरर% v", इरेट)
}

बिल्ट-इन स्ट्रिंग फ़ंक्शन के साथ, आप बाइट स्लाइस प्रतिक्रिया को स्ट्रिंग प्रकार में बदल सकते हैं।

fmt. प्रिंटलन(डोरी(प्रतिक्रिया डेटा))

यहाँ एपीआई अनुरोध का परिणाम दिखाने वाली प्रतिक्रिया है:

RESTful APIs का उपभोग करना, GraphQL APIs के उपभोग के समान है

चूँकि REST और GraphQL दोनों API HTTP प्रोटोकॉल का उपयोग करते हैं, प्रत्येक का उपभोग करना एक समान प्रक्रिया है, और आप इसका उपयोग कर सकते हैं एचटीटीपी दोनों मामलों के लिए पैकेज।

आपको क्लाइंट बनाने, उदाहरणों का अनुरोध करने और उसी पैकेज के साथ डेटा पढ़ने की आवश्यकता होगी।