GraphQL JavaScript लाइब्रेरी (Node.js): Apollo Server और टूल्स के लिए पूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Node.js के लिए GraphQL लाइब्रेरी: Apollo Server और डेवलपमेंट टूल्स

\n\n

GraphQL एक API क्वेरी भाषा है जो क्लाइंट को केवल उन डेटा को अनुरोध करने की अनुमति देती है जिनकी उन्हें आवश्यकता है। Node.js पर डेवलपमेंट के लिए सबसे लोकप्रिय लाइब्रेरी Apollo Server है। यह GraphQL API बनाने, परीक्षण करने और तैनात करने के लिए टूलों का एक पूर्ण सेट प्रदान करता है। इस लेख में, हम प्रमुख घटकों, दृष्टिकोणों और कोड उदाहरणों पर विस्तार से चर्चा करेंगे।

\n\n

Apollo Server क्या है?

\n

Apollo Server एक ओपन-सोर्स लाइब्रेरी है जो Node.js पर GraphQL सर्वर को जल्दी से बनाने की अनुमति देती है। यह कई ट्रांसपोर्ट (HTTP, WebSocket) का समर्थन करती है और फ्रेमवर्क (Express, Koa, Fastify) के साथ आसानी से एकीकृत होती है। मुख्य विशेषताएं:

\n
    \n
  • GraphQL Playground के माध्यम से स्वचालित दस्तावेज़ीकरण निर्माण।
  • \n
  • WebSocket के माध्यम से सब्सक्रिप्शन का समर्थन।
  • \n
  • कैशिंग और डेटा संयोजन तंत्र (data loaders)।
  • \n
  • प्रमाणीकरण और प्राधिकरण के लिए लचीली middleware प्रणाली।
  • \n
\n\n

स्थापना और बुनियादी सेटअप

\n

शुरू करने के लिए, apollo-server और graphql पैकेज स्थापित करें:

\n
npm install apollo-server graphql
\n\n

एक सरल सर्वर बनाएं जो अभिवादन लौटाता है:

\n
const { ApolloServer, gql } = require('apollo-server');\n\n// स्कीमा परिभाषित करें (SDL)\nconst typeDefs = gql`\n  type Query {\n    hello: String\n  }\n`;\n\n// रिज़ॉल्वर — फ़ंक्शन जो डेटा लौटाते हैं\nconst resolvers = {\n  Query: {\n    hello: () => 'Hello, GraphQL!',\n  },\n};\n\n// सर्वर शुरू करें\nconst server = new ApolloServer({ typeDefs, resolvers });\nserver.listen().then(({ url }) => {\n  console.log(`🚀 सर्वर ${url} पर शुरू हुआ`);\n});
\n\n

डेटा प्रकार और स्कीमा

\n

GraphQL में, स्कीमा सभी उपलब्ध प्रकारों और संचालनों को परिभाषित करती है। मुख्य प्रकार:

\n
    \n
  • String, Int, Float, Boolean, ID — स्केलर प्रकार।
  • \n
  • [Type] — ऑब्जेक्ट की सूची।
  • \n
  • type — कस्टम ऑब्जेक्ट।
  • \n
  • input — म्यूटेशन के इनपुट पैरामीटर के लिए प्रकार।
  • \n
\n\n

ब्लॉग के लिए स्कीमा का उदाहरण:

\n
type User {\n  id: ID!\n  name: String!\n  posts: [Post!]!\n}\n\ntype Post {\n  id: ID!\n  title: String!\n  content: String!\n  author: User!\n}\n\ntype Query {\n  user(id: ID!): User\n  posts(limit: Int): [Post!]!\n}\n\ntype Mutation {\n  createUser(name: String!): User!\n}
\n\n

रिज़ॉल्वर: स्कीमा को डेटा से जोड़ना

\n

स्कीमा के प्रत्येक फ़ील्ड का एक संबंधित रिज़ॉल्वर होना चाहिए। रिज़ॉल्वर डेटाबेस (MongoDB, PostgreSQL), बाहरी API या स्थिर ऐरे से डेटा प्राप्त कर सकते हैं।

\n
const users = [\n  { id: '1', name: 'अन्ना' },\n  { id: '2', name: 'बोरिस' },\n];\n\nconst posts = [\n  { id: '10', title: 'शुरुआती के लिए GraphQL', content: '...', authorId: '1' },\n  { id: '20', title: 'Node.js टिप्स', content: '...', authorId: '2' },\n];\n\nconst resolvers = {\n  Query: {\n    user: (_, { id }) => users.find(u => u.id === id),\n    posts: (_, { limit }) => limit ? posts.slice(0, limit) : posts,\n  },\n  Mutation: {\n    createUser: (_, { name }) => {\n      const newUser = { id: String(users.length + 1), name };\n      users.push(newUser);\n      return newUser;\n    },\n  },\n  User: {\n    posts: (parent) => posts.filter(p => p.authorId === parent.id),\n  },\n};
\n\n

TypeGraphQL के साथ Code-first दृष्टिकोण

\n

बड़ी परियोजनाओं के लिए, code-first दृष्टिकोण का उपयोग करना अधिक सुविधाजनक है, जहां स्कीमा TypeScript क्लासेस से उत्पन्न होती है। type-graphql लाइब्रेरी आपको ऐसा कोड लिखने की अनुमति देती है जो एक साथ प्रकार और रिज़ॉल्वर दोनों है।

\n
npm install type-graphql reflect-metadata class-validator
\n\n

एंटिटी क्लास का उदाहरण:

\n
import { ObjectType, Field,                    

अनुशंसाएँ