GraphQL और इसके लाभों का परिचय
\n\nGraphQL एक क्वेरी भाषा और API के लिए रनटाइम वातावरण है, जिसे Facebook द्वारा विकसित किया गया है। REST के विपरीत, जहाँ आपको निश्चित डेटा संरचनाएँ मिलती हैं, GraphQL क्लाइंट को केवल वही अनुरोध करने की अनुमति देता है जिसकी उसे आवश्यकता होती है। यह API को अधिक लचीला और कुशल बनाता है।
\n\nइस चरण-दर-चरण ट्यूटोरियल में, हम Node.js का उपयोग करके JavaScript में एक पूर्ण GraphQL API बनाएंगे। आप सर्वर सेट अप करना, स्कीमा परिभाषित करना, क्वेरी और म्यूटेशन को संभालना सीखेंगे। लेख के अंत तक, आपके पास एक कार्यशील API होगा, जो किसी भी प्रोजेक्ट में एकीकरण के लिए तैयार है।
\n\n1. प्रोजेक्ट सेटअप और निर्भरताएँ स्थापित करना
\n\nशुरू करने के लिए, हम एक नया Node.js प्रोजेक्ट बनाएंगे और आवश्यक पैकेज स्थापित करेंगे। हम apollo-server का उपयोग करेंगे - जो GraphQL सर्वर बनाने के लिए एक लोकप्रिय लाइब्रेरी है।
चरण 1: प्रोजेक्ट आरंभीकरण
\nmkdir graphql-tutorial\ncd graphql-tutorial\nnpm init -y\n\nचरण 2: Apollo Server और GraphQL स्थापित करना
\nnpm install apollo-server graphql\n\nस्थापना के बाद, हम मुख्य फ़ाइल index.js बनाएंगे, जहाँ हमारा सर्वर स्थित होगा।
2. बेसिक GraphQL सर्वर बनाना
\n\nअब हम एक न्यूनतम सर्वर लिखेंगे जो अनुरोध स्वीकार करेगा और प्रतिक्रियाएँ लौटाएगा। इसके लिए, हम स्कीमा और रिज़ॉल्वर परिभाषित करेंगे।
\n\nचरण 1: डेटा प्रकार परिभाषित करना
\nहम id, title और author फ़ील्ड के साथ एक सरल Book प्रकार बनाएंगे।
const { ApolloServer, gql } = require('apollo-server');\n\n// GraphQL स्कीमा\nconst typeDefs = gql`\n type Book {\n id: ID!\n title: String!\n author: String!\n }\n\n type Query {\n books: [Book]\n book(id: ID!): Book\n }\n`;\n\n// नमूना डेटा (वास्तविक प्रोजेक्ट में - डेटाबेस)\nconst books = [\n { id: '1', title: 'युद्ध और शांति', author: 'लियो टॉल्स्टॉय' },\n { id: '2', title: 'अपराध और दंड', author: 'फ्योदोर दोस्तोयेव्स्की' },\n { id: '3', title: 'मास्टर और मार्गरीटा', author: 'मिखाइल बुल्गाकोव' }\n];\n\n// रिज़ॉल्वर - डेटा लौटाने वाले फ़ंक्शन\nconst resolvers = {\n Query: {\n books: () => books,\n book: (parent, args) => books.find(book => book.id === args.id)\n }\n};\n\n// सर्वर बनाना\nconst server = new ApolloServer({ typeDefs, resolvers });\n\n// सर्वर चालू करना\nserver.listen().then(({ url }) => {\n console.log(`🚀 सर्वर इस पते पर तैयार है: ${url}`);\n});\n\nचरण 2: चालू करना और परीक्षण
\nnode index.js कमांड चलाएँ और ब्राउज़र में http://localhost:4000 खोलें। आपको GraphQL Playground दिखाई देगा - क्वेरी परीक्षण के लिए एक उपकरण।
एक सरल क्वेरी चलाने का प्रयास करें:
\n{\n books {\n title\n author\n }\n}\n\nप्रतिक्रिया में निर्दिष्ट फ़ील्ड के साथ पुस्तकों की सूची होनी चाहिए।
\n\n3. म्यूटेशन जोड़ना और स्कीमा का विस्तार करना
\n\nअब हम म्यूटेशन के माध्यम से डेटा बदलने की क्षमता जोड़ेंगे। इससे रिकॉर्ड बनाना, अपडेट करना और हटाना संभव होगा।
\n\nचरण 1: स्कीमा में म्यूटेशन परिभाषित करना
\nconst typeDefs = gql`\n type Book {\n id: ID!\n title: String!\n author: String!\n }\n\n input BookInput {\n title: String!\n author: String!\n }\n\n type Query {\n books: [Book]\n book(id: ID!): Book\n }\n\n type Mutation {\n addBook(input: BookInput!): Book\n deleteBook(id: ID!): Book\n }\n`;\n\nचरण 2: म्यूटेशन के लिए रिज़ॉल्वर लागू करना
\nconst resolvers = {\n Query: {\n books: () => books,\n book: (parent, args) => books.find(book => book.id === args.id)\n },\n Mutation: {\n addBook: (parent, args) => {\n const newBook = {\n id: String(books.length + 1),\n title: args.input.title,\n author: args.input.author\n };\n books.push(newBook);\n return newBook;\n },\n deleteBook: (parent, args) => {\n const index = books.findIndex(book => book.id