JavaScript के साथ GraphQL API: Node.js के लिए चरण-दर-चरण ट्यूटोरियल
GraphQL API के लिए एक शक्तिशाली क्वेरी भाषा है, जिसे Facebook द्वारा विकसित किया गया है। REST के विपरीत, जहाँ आपको निश्चित डेटा संरचनाएँ मिलती हैं, GraphQL क्लाइंट को केवल वही अनुरोध करने की अनुमति देता है जिसकी उसे आवश्यकता है। इस ट्यूटोरियल में, हम Node.js और Apollo Server का उपयोग करके JavaScript में एक पूर्ण GraphQL API बनाएंगे। आप सीखेंगे कि सर्वर को कैसे सेट अप करें, स्कीमा को परिभाषित करें, रिज़ॉल्वर लिखें और क्वेरी और म्यूटेशन निष्पादित करें।
GraphQL क्या है और इसकी आवश्यकता क्यों है?
GraphQL REST API की कई समस्याओं का समाधान करता है:
- डेटा अतिरेकता: क्लाइंट को केवल वे फ़ील्ड प्राप्त होते हैं जिनका उसने अनुरोध किया था।
- एकाधिक अनुरोध: एक GraphQL क्वेरी कई REST एंडपॉइंट्स को बदल सकती है।
- सख्त टाइपिंग: स्कीमा डेटा प्रकारों और उनके बीच संबंधों को परिभाषित करती है।
JavaScript (Node.js) पैकेजों के विशाल पारिस्थितिकी तंत्र और अतुल्यकालिक प्रकृति के कारण GraphQL API बनाने के लिए एक आदर्श विकल्प है।
चरण 1: प्रोजेक्ट की स्थापना और कॉन्फ़िगरेशन
एक नई निर्देशिका बनाएँ और प्रोजेक्ट को इनिशियलाइज़ करें:
mkdir graphql-api-tutorialcd graphql-api-tutorialnpm init -yआवश्यक निर्भरताएँ स्थापित करें:
npm install apollo-server graphqlएक फ़ाइल बनाएँ index.js — यह हमारे एप्लिकेशन का प्रवेश बिंदु होगा।
चरण 2: GraphQL स्कीमा को परिभाषित करना
स्कीमा GraphQL API का मूल है। यह डेटा प्रकारों और उपलब्ध संचालन (क्वेरी, म्यूटेशन, सब्सक्रिप्शन) का वर्णन करती है। आइए पुस्तकों के प्रबंधन के लिए एक सरल स्कीमा बनाएँ।
const { ApolloServer, gql } = require('apollo-server');
const typeDefs = gql` type Book { id: ID! title: String! author: String! year: Int }
type Query { books: [Book] book(id: ID!): Book }
type Mutation { addBook(title: String!, author: String!, year: Int): Book deleteBook(id: ID!): Book }`;यहाँ हमने परिभाषित किया है:
- Book — id, title, author, year फ़ील्ड वाला एक ऑब्जेक्ट प्रकार।
- Query — डेटा पढ़ने के लिए प्रवेश बिंदु (पुस्तकों की सूची और ID द्वारा पुस्तक)।
- Mutation — डेटा बदलने के संचालन (पुस्तक जोड़ना और हटाना)।
चरण 3: रिज़ॉल्वर लिखना
रिज़ॉल्वर ऐसे फ़ंक्शन हैं जो स्कीमा के प्रत्येक फ़ील्ड के लिए डेटा लौटाते हैं। आइए एक काल्पनिक डेटाबेस (ऑब्जेक्ट्स की एक सरणी) बनाएँ और रिज़ॉल्वर लागू करें।
let books = [ { id: '1', title: '1984', author: 'George Orwell', year: 1949 }, { id: '2', title: 'To Kill a Mockingbird', author: 'Harper Lee', year: 1960 },];
const resolvers = { Query: { books: () => books, book: (parent, args) => books.find(book => book.id === args.id), }, Mutation: { addBook: (parent, args) => { const newBook = { id: String(books.length + 1), title: args.title, author: args.author, year: args.year, }; books.push(newBook); return newBook; }, deleteBook: (parent, args) => { const index = books.findIndex(book => book.id === args.id); if (index === -1) return null; const deletedBook = books.splice(index, 1)[0]; return deletedBook; }, },};संरचना पर ध्यान दें: Query और Mutation ऐसी वस्तुएँ हैं जिनमें रिज़ॉल्वर विधियाँ हैं। प्रत्येक रिज़ॉल्वर तीन तर्क लेता है: parent (पैरेंट रिज़ॉल्वर का परिणाम), args (क्वेरी तर्क) और context (संदर्भ वस्तु, उदाहरण के लिए, प्रमाणीकरण के लिए)।
चरण 4: सर्वर चलाना और परीक्षण करना
अब स्कीमा और रिज़ॉल्वर को Apollo Server में जोड़ें:
const server = new ApolloServer({ typeDefs, resolvers });
server.listen().then(({ url }) => { console.log(`🚀 Server ready at ${url}`);});
ब्लॉग
पुस्तक अनुशंसाएँ
यह भी पढ़ें
TypeScript में null और undefined की जाँच कैसे करें: खतरे और सर्वोत्तम समाधान
PHP प्रोजेक्ट्स के लिए CI/CD: GitHub Actions को शुरू से सेटअप करना
उन्नत वेब डेवलपमेंट के लिए शीर्ष 10 PHP फ्रेमवर्क
जावास्क्रिप्ट डेवलपर का करियर: कितना कमाते हैं और कहाँ आगे बढ़ें
रस्ट हैकाथॉन: टिप्स, प्रोजेक्ट उदाहरण और कोड विश्लेषण