ग्राफकलाइन - स्कीमा

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

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

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

makeExecutableSchema फ़ंक्शन सिंटैक्स

makeExecutableSchemaफ़ंक्शन ऑब्जेक्ट प्रकार का एकल तर्क {} लेता है। इस फ़ंक्शन का उपयोग करने का सिंटैक्स नीचे दिया गया है -

import { makeExecutableSchema } from 'graphql-tools';

const jsSchema = makeExecutableSchema({
   typeDefs,
   resolvers, // optional
   logger, // optional
   allowUndefinedInResolve = false, // optional
   resolverValidationOptions = {}, // optional
   directiveResolvers = null, // optional
   schemaDirectives = null,  // optional
   parseOptions = {},  // optional
   inheritResolversFromInterfaces = false  // optional
});

अनु क्रमांक। पैरामीटर और विवरण
1

typeDefs

यह एक आवश्यक तर्क है। यह UTF-8 स्ट्रिंग के रूप में एक ग्राफक्यूएल क्वेरी का प्रतिनिधित्व करता है।

2

Resolvers

यह एक वैकल्पिक तर्क है (डिफ़ॉल्ट रूप से खाली वस्तु)। इसमें फ़ंक्शन हैं जो क्वेरी को संभालते हैं।

3

logger

यह एक वैकल्पिक तर्क है और इसका उपयोग सर्वर कंसोल में त्रुटियों को प्रिंट करने के लिए किया जा सकता है।

4

parseOptions

यह एक वैकल्पिक तर्क है और एक स्ट्रिंग के रूप में typeDefs निर्दिष्ट करते समय पार्स के अनुकूलन की अनुमति देता है।

5

allowUndefinedInResolve

यह डिफ़ॉल्ट रूप से सत्य है। जब असत्य पर सेट होता है, तो आपके संकल्प कार्यों को त्रुटियों को फेंकने का कारण बनता है यदि वे अपरिभाषित वापस आते हैं।

6

resolverValidationOptions

यह एक वैकल्पिक तर्क है और बूलियन गुणों वाली एक वस्तु को स्वीकार करता है।

7

inheritResolversFromInterfaces

यह एक वैकल्पिक तर्क है और रिज़ॉल्वर ऑब्जेक्ट इनहेरिटेंस की जाँच करने के लिए बूलियन तर्क को स्वीकार करता है।

चित्रण

आइए इस स्कीमा को समझने के लिए एक सरल एप्लिकेशन बनाएं। यह सर्वर से छात्रों की सूची को क्वेरी करने के लिए एक स्कीमा बनाएगा। छात्र डेटा को एक फ्लैट फ़ाइल में संग्रहीत किया जाएगा और हम एक नोड मॉड्यूल का उपयोग करेंगे जिसे कहा जाता हैnotarealdb एक डेटाबेस नकली और फ्लैट फ़ाइल से पढ़ने के लिए।

चरण 1 - परियोजना के लिए आवश्यक निर्भरताएँ डाउनलोड और स्थापित करें

नाम का फोल्डर बनाएं schema-app। टर्मिनल से अपनी निर्देशिका को स्कीमा-ऐप में बदलें। फिर, डाउनलोड और स्थापना प्रक्रिया को पूरा करने के लिए पर्यावरण सेटअप अध्याय में बताए गए चरण 3 से 5 का पालन करें।

चरण 2 - एक स्कीमा बनाएं

जोड़ना schema.graphql प्रोजेक्ट फ़ोल्डर में फ़ाइल, schema-app और निम्नलिखित कोड जोड़ें -

type Query {
   greeting:String
   students:[Student]
}

type Student {
   id:ID!
   firstName:String
   lastName:String
   password:String
   collegeId:String
}

स्कीमा की जड़ क्वेरी प्रकार होगी। क्वेरी में दो फ़ील्ड हैं - ग्रीटिंग और छात्र जो क्रमशः स्ट्रिंग और छात्रों की सूची लौटाते हैं। विद्यार्थी को एक ऑब्जेक्ट प्रकार के रूप में घोषित किया जाता है क्योंकि इसमें कई फ़ील्ड होते हैं। आईडी फ़ील्ड को गैर-अशक्त घोषित किया जाता है।

चरण 3 - रिज़ॉल्वर बनाएं

एक फ़ाइल बनाएँ resolvers.js प्रोजेक्ट फ़ोल्डर में और निम्न कोड जोड़ें -

const db = require('./db')
const Query = {
   greeting:() => {
      return "hello from  TutorialsPoint !!!"
   },
   students:() => db.students.list()
}

module.exports = {Query}

यहाँ ग्रीटिंग और स्टूडेंट्स रिज़ॉल्वर हैं जो क्वेरी को संभालते हैं। students resolver functionडेटा एक्सेस लेयर से छात्रों की सूची लौटाता है। मॉड्यूल के बाहर रिसॉल्वर फ़ंक्शंस तक पहुंचने के लिए, क्वेरी ऑब्जेक्ट का उपयोग करके निर्यात किया जाना हैmodule.exports

चरण 4 - एप्लिकेशन को चलाएं

एक Server.js फ़ाइल बनाएँ और पर्यावरण सेटअप अध्याय में चरण 8 देखें। अगला कदम टर्मिनल में कमांड एनपीएम स्टार्ट को निष्पादित करना है। सर्वर 9000 पोर्ट पर अप और रनिंग होगा। यहाँ, हम अनुप्रयोग का परीक्षण करने के लिए एक ग्राहक के रूप में ग्राफिंक का उपयोग करते हैं। ब्राउज़र खोलें और URL टाइप करें,http://localhost:9000/graphiql

संपादक में निम्नलिखित प्रश्न टाइप करें -

{
   greeting
   students {
      id
      firstName
      lastName
   }
}

क्वेरी नीचे दिखाए अनुसार आउटपुट प्रदर्शित करेगी -

Note- हम छात्र डेटा या यहां तक ​​कि एक वास्तविक डेटाबेस जैसे MySQL या MongbDB को पुनः प्राप्त करने के लिए छात्रों.जेसन को RESTful API कॉल से बदल सकते हैं। प्रदर्शन को बेहतर बनाने के लिए आपकी मूल एप्लिकेशन परत के चारों ओर एक अच्छा आवरण बन जाता है।