GraphQL: HTTP पर REST का एक विकल्प

GraphQL: HTTP पर REST का एक विकल्प

अनुप्रयोगों के निर्माण और वितरण के लिए कई ओपन-सोर्स आर्किटेक्चरल मानक मौजूद हैं। आरईएसटी (प्रतिनिधि राज्य स्थानांतरण), एसओएपी (सरल ऑब्जेक्ट एक्सेस प्रोटोकॉल), आरपीसी (रिमोट प्रक्रियात्मक कॉल), और ग्राफक्यूएल एपीआई सबसे लोकप्रिय हैं।





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





दिन का मेकअप वीडियो

आपको डेटा प्राप्त करने में भी समस्या आ सकती है क्योंकि RESTful API विशिष्ट डेटा का चयन करने के लिए पर्याप्त लचीले नहीं होते हैं। GraphQL RESTful API की इन समस्याओं को हल करता है।





दो फेसबुक अकाउंट कैसे मिलाएं

ग्राफक्यूएल क्या है?

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

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



मेटा ने एचटीटीपी पर निर्माण के लिए आरईएसटी के विकल्प के रूप में 2012 में ग्राफक्यूएल बनाया। उन्होंने 2015 में GraphQL को एक ओपन-सोर्स मानक के रूप में जारी किया। आज, GraphQL फाउंडेशन GraphQL विनिर्देश के विकास की देखरेख करता है।

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





साथ ही, सभी GraphQL अनुरोध अंततः अनुरोध की स्थिति की परवाह किए बिना 200 का स्टेटस कोड लौटाते हैं।

ग्राफक्यूएल कैसे काम करता है?

  ग्राफक्यूएल's functions and syntax

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





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

आपको ग्राफक्यूएल का उपयोग क्यों करना चाहिए?

REST एक उपयोग में आसान मानक है, और अधिकांश प्रोग्रामिंग भाषाओं में RESTful API को तेज़ी से बनाने के लिए उपकरण होते हैं। हालाँकि, RESTful API बनाने और उपभोग करने में कई समस्याएँ हैं।

यहां आरईएसटी के साथ कुछ समस्याएं हैं जो डेवलपर्स को कुछ उपयोग मामलों के लिए ग्राफक्यूएल पसंद करती हैं।

अक्षम डेटा फ़ेचिंग

रेस्टफुल एपीआई एंडपॉइंट के विनिर्देश के आधार पर डेटा रिले करते हैं। वे एंडपॉइंट के हैंडलर फ़ंक्शन में हार्ड कोड किए गए डेटा से परे डेटा पुनर्प्राप्त करने के लिए पर्याप्त लचीले नहीं हैं।

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

ग्राफक्यूएल अक्षम डेटा प्राप्त करने की समस्या को हल करता है क्योंकि आप एपीआई को मानदंड और विनिर्देशों के आधार पर लचीले ढंग से डेटा वापस करने के लिए क्वेरी कर सकते हैं।

ग्राफक्यूएल एपीआई इंटरैक्टिव हैं; आप एक आसान, पठनीय सिंटैक्स में पुनर्प्राप्त करने के लिए आवश्यक डेटा निर्दिष्ट कर सकते हैं।

मैक के लिए सर्वश्रेष्ठ मुफ्त वीडियो संपादन सॉफ्टवेयर
{ 
user(where: {age: {_eq: "89"}}) {
name
school(where: {alive: {_eq: true}}) {
bio
nationality
}
}
}

प्रश्नों के ऊपर GraphQL क्वेरी a उपयोगकर्ता प्रविष्टियों के लिए स्कीमा जहां आयु फ़ील्ड 89 है। क्वेरी में प्रविष्टियों के लिए एक एम्बेडेड क्वेरी है जहां जीवित क्षेत्र मूल्यांकन सच . यह स्कीमा से नाम, जैव और राष्ट्रीयता फ़ील्ड लौटाता है।

शीघ्र विकास

ग्राफक्यूएल एपीआई का निर्माण और उपभोग करना आरईएसटी का उपयोग करने से आसान है, खासकर जब परियोजना का आकार बढ़ता है। विकास के चरण के दौरान, आपको RESTful API विकसित करते समय उतने रूट और हैंडलर फ़ंक्शन विकसित करने की आवश्यकता नहीं है। ग्राफक्यूएल एपीआई का उपभोग करना रेस्टफुल एपीआई की तरह थकाऊ नहीं है।

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

ग्राफक्यूएल स्कीमा परिभाषा भाषा

GraphQL स्कीमा डेफिनिशन लैंग्वेज (SDL) GraphQL सेवाओं के लिए स्कीमा निर्दिष्ट करती है।

GraphQL SDL सिंटैक्स को पढ़ना और समझना आसान है। आप फ़ाइल में अपनी स्कीमा की संरचना निर्दिष्ट करेंगे .ग्राफक्ली या .ग्राफक्ल्स विस्तार।

type Human { 
name: String!
age: Int!
}

input AddHuman {
name: String!
age: Int!
}

type Mutation {
CreateHuman(input: AddHuman!): Human!
DeleteHuman(id: Int!): String!
UpdateHuman(id: Int!): String!
}

type Query {
GetHuman(id: Int!): Human!
GetHumans: [Human!]!
}

उपरोक्त ग्राफ़क्यूएल कोड अनुरोध के लिए एपीआई की संरचना को परिभाषित करने वाले ग्राफक्यूएल एपीआई के लिए स्कीमा है। स्कीमा एपीआई के लिए सीआरयूडी कार्यक्षमता को परिभाषित करता है।

क्लाइंट पक्ष पर, स्कीमा की संरचना और क्लाइंट के डेटा या संचालन के आधार पर, क्लाइंट निष्पादित कर सकता है a सवाल (REST में GET या DELETE) या a परिवर्तन (पुट या पोस्ट)।

यहां क्वेरी करने का एक उदाहरण दिया गया है मानवीय स्कीमा।

query Human { 
name
age
}

उपरोक्त क्वेरी मानव स्कीमा को वापस कर देगी नाम तथा आयु कार्यक्षेत्र का डाटा।

ग्राफ़क्यूएल म्यूटेशन में प्रश्नों के विपरीत काफी अलग सिंटैक्स होता है। यहाँ पर एक उदाहरण उत्परिवर्तन ऑपरेशन है मानवीय स्कीमा।

mutation { 
CreateHuman(input:{ name:"man", age:1000000000000000,}) {
name
age
}
}

उत्परिवर्तन कोड इनपुट नाम तथा आयु क्लाइंट को फ़ील्ड और फ़ील्ड से डेटा लौटाता है।

जब आप अपना ग्राफ़क्यूएल एपीआई बना रहे हों तो आपको दृढ़ता के लिए डेटा स्टोर की आवश्यकता होगी। REST और अधिकांश HTTP-आधारित वेब आर्किटेक्चर की तरह, GraphQL स्टेटलेस है, और आप अपने ऐप के लिए किसी भी डेटा स्टोर या डेटाबेस का उपयोग कर सकते हैं।

ग्राफक्यूएल एपीआई का निर्माण

  ग्राफक्यूएल समर्थित भाषाएं

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

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

कोड बंद करो system_service_exception

ग्राफक्यूएल गोद ले रहा है

ग्राफक्यूएल की स्थापना के बाद से, डेवलपर्स और कंपनियों ने इसके उपयोग को आसान बनाने के लिए टूल जारी किए हैं। ये छोटी और मध्यम परियोजनाओं के विकास के समय को कम कर सकते हैं।

अधिक जानने के लिए आप ओपन-सोर्स ग्राफक्यूएल क्लाइंट, ग्राफक्यूएल दस्तावेज और इसके विनिर्देश की जांच कर सकते हैं।