Go के साथ GraphQL API: शुरुआती लोगों के लिए चरण-दर-चरण ट्यूटोरियल

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

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

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

GraphQL और Go का परिचय

\n

GraphQL API के लिए एक क्वेरी भाषा है जो क्लाइंट को केवल वही डेटा प्राप्त करने की अनुमति देती है जिसकी उन्हें आवश्यकता होती है, और कुछ भी अतिरिक्त नहीं। REST के विपरीत, जहां प्रत्येक एंडपॉइंट एक निश्चित डेटा संरचना लौटाता है, GraphQL लचीलापन और नियंत्रण प्रदान करता है। Go (Golang) के साथ संयोजन में - एक तेज़, टाइप-सुरक्षित और सरल भाषा - आपको आधुनिक वेब सेवाएँ बनाने के लिए एक शक्तिशाली उपकरण मिलता है।

\n

इस ट्यूटोरियल में, हम शुरू से Go में एक सरल GraphQL API बनाएंगे। आप निर्भरताएँ स्थापित करना, स्कीमा का वर्णन करना, रिज़ॉल्वर लागू करना और सर्वर चलाना सीखेंगे। यह लेख शुरुआती लोगों के लिए है, इसलिए सभी चरणों को विस्तार से समझाया गया है।

\n\n

1. प्रोजेक्ट तैयार करना और निर्भरताएँ स्थापित करना

\n

कोड लिखने से पहले, सुनिश्चित करें कि आपके पास Go संस्करण 1.18 या उच्चतर स्थापित है। प्रोजेक्ट के लिए एक नई निर्देशिका बनाएँ और मॉड्यूल को इनिशियलाइज़ करें:

\n
mkdir graphql-go-tutorial\ncd graphql-go-tutorial\ngo mod init graphql-go-tutorial
\n\n

लाइब्रेरी का चयन: gqlgen

\n

Go में GraphQL के साथ काम करने के लिए कई लाइब्रेरी हैं। हम gqlgen का उपयोग करेंगे - एक लोकप्रिय कोड जनरेटर जो स्कीमा के आधार पर प्रकार और रिज़ॉल्वर बनाता है। इसे स्थापित करें:

\n
go get github.com/99designs/gqlgen@latest
\n\n

gqlgen को इनिशियलाइज़ करना

\n

डिफ़ॉल्ट फ़ाइलें बनाने के लिए कमांड चलाएँ:

\n
go run github.com/99designs/gqlgen init
\n

यह कमांड कई फ़ाइलें बनाएगा:

\n
    \n
  • graph/schema.graphqls — GraphQL स्कीमा फ़ाइल;
  • \n
  • graph/resolver.go — रिज़ॉल्वर का खाका;
  • \n
  • server.go — सर्वर का प्रवेश बिंदु;
  • \n
  • gqlgen.yml — जनरेशन कॉन्फ़िगरेशन।
  • \n
\n\n

2. GraphQL स्कीमा का वर्णन

\n

फ़ाइल graph/schema.graphqls खोलें। डिफ़ॉल्ट रूप से, इसमें पहले से ही Todo प्रकार का एक उदाहरण है। हम इसे User प्रकार और कुछ क्वेरी जोड़कर विस्तारित करेंगे।

\n

फ़ाइल की सामग्री को निम्नलिखित से बदलें:

\n
type User {\n    id: ID!\n    name: String!\n    email: String!\n}\n\ntype Todo {\n    id: ID!\n    text: String!\n    done: Boolean!\n    user: User!\n}\n\ntype Query {\n    todos: [Todo!]!\n    users: [User!]!\n    user(id: ID!): User\n}\n\ntype Mutation {\n    createTodo(text: String!, userId: ID!): Todo!\n    markDone(id: ID!): Todo!\n}
\n

यहाँ हमने परिभाषित किया है:

\n
    \n
  • User — id, name, email फ़ील्ड वाला उपयोगकर्ता।
  • \n
  • Todo — id, text, done फ़ील्ड और उपयोगकर्ता के लिंक वाला कार्य।
  • \n
  • Query — डेटा पढ़ने के लिए प्रवेश बिंदु।
  • \n
  • Mutation — डेटा बदलने के लिए संचालन।
  • \n
\n\n

3. कोड जनरेशन और रिज़ॉल्वर का कार्यान्वयन

\n

स्कीमा का वर्णन करने के बाद, Go कोड जनरेट करना आवश्यक है। चलाएँ:

\n
go run github.com/99designs/gqlgen generate
\n

यह models_gen.go फ़ाइलें बनाएगा और resolver.go को अपडेट करेगा। अब graph/resolver.go खोलें।

\n\n

डेटा स्टोरेज जोड़ना

\n

सरलता के लिए, हम डेटा को मेमोरी में स्टोर करेंगे। resolver.go में एक संरचना जोड़ें:

\n
type Resolver struct {\n    Users []*model.User\n    Todos []*model.Todo\n}
\n

model पैकेज को इम्पोर्ट करना न भूलें।

\n\n

क्वेरी (Query) का कार्यान्वयन

\n

Query के लिए जनरेटेड मेथड खोजें। उन्हें लागू करें:

\n
func (r *queryResolver) Todos(ctx context.Context) ([]*model.Todo, error) {\n    return r.Resolver.Todos, nil\n}\n\nfunc (r *queryResolver) Users(ctx context.Context) ([]*model.User, error) {\n    return r.Resolver.Users, nil\n}\n\nfunc (r *queryResolver) User(ctx context.Context, id string) (*model.User, error) {\n    for _, u := range r.Resolver.Users {\n        if u.ID == id {\n            return u, nil\n        }\n    }\n    return nil, fmt.Errorf("user not found")\n}

                
                

ब्लॉग

पुस्तक अनुशंसाएँ