Go में GraphQL: gqlgen लाइब्रेरी के लिए पूर्ण गाइड

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

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

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

Go (Golang) के लिए gqlgen लाइब्रेरी: GraphQL API बनाना



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



gqlgen क्या है और इसे क्यों चुनें?



gqlgen ("graphql generator" के रूप में विस्तारित) Go के लिए एक लाइब्रेरी है जो स्कीमा के आधार पर GraphQL सर्वर बनाती है। इसकी मुख्य विशेषता code-first दृष्टिकोण है: आप .graphql फ़ाइल में स्कीमा का वर्णन करते हैं, और लाइब्रेरी सभी आवश्यक Go-कोड (स्ट्रक्चर, रिज़ॉल्वर के लिए इंटरफ़ेस) जनरेट करती है। यह रूटीन बॉयलरप्लेट कोड लिखने से बचाता है और त्रुटियों की संभावना को कम करता है।



मुख्य लाभ:

  • स्वचालित कोड जनरेशन: स्कीमा से टाइप, विधियाँ और रिज़ॉल्वर इंटरफ़ेस बनाए जाते हैं।
  • टाइप सुरक्षा: सभी टाइप Go कंपाइलेशन चरण में जाँचे जाते हैं।
  • प्रदर्शन: लाइब्रेरी उच्च-लोड सिस्टम में काम करने के लिए अनुकूलित है।
  • सब्सक्रिप्शन का समर्थन: WebSocket के माध्यम से रीयल-टाइम कार्यक्षमता को लागू करने की संभावना।
  • लचीलापन: डेटाबेस, कैश और अन्य सेवाओं के साथ आसानी से एकीकृत होता है।


इंस्टॉलेशन और कॉन्फ़िगरेशन



काम शुरू करने के लिए, gqlgen को इंस्टॉल करना और प्रोजेक्ट को इनिशियलाइज़ करना आवश्यक है:



// लाइब्रेरी इंस्टॉल करनाgo get github.com/99designs/gqlgen@latest

// प्रोजेक्ट स्केलेटन इनिशियलाइज़ करनाgo run github.com/99designs/gqlgen init


init कमांड निष्पादित करने के बाद, प्रोजेक्ट संरचना बनाई जाएगी:

  • graph/schema.graphqls — स्कीमा वाली फ़ाइल।
  • graph/resolver.go — रूट रिज़ॉल्वर।
  • graph/schema.resolvers.go — रिज़ॉल्वर के लिए जनरेटेड स्टब्स।
  • server.go — सर्वर शुरू करने के लिए एंट्री पॉइंट।


GraphQL स्कीमा परिभाषित करना



schema.graphqls फ़ाइल में टाइप, क्वेरी और म्यूटेशन का वर्णन किया जाता है। ब्लॉग सिस्टम के लिए स्कीमा का उदाहरण:



# User टाइप की परिभाषाtype User {  id: ID!  name: String!  email: String!  posts: [Post!]!}

# Post टाइप की परिभाषाtype Post { id: ID! title: String! content: String! author: User!}

# रूट Query टाइपtype Query { user(id: ID!): User users: [User!]! post(id: ID!): Post posts: [Post!]!}

# रूट Mutation टाइपtype Mutation { createUser(name: String!, email: String!): User! createPost(title: String!, content: String!, authorId: ID!): Post!}


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



स्कीमा का वर्णन करने के बाद, कोड जनरेशन चलाएँ:



go run github.com/99designs/gqlgen generate


लाइब्रेरी Go-स्ट्रक्चर और इंटरफ़ेस वाली फ़ाइलें बनाएगी। अब रिज़ॉल्वर को लागू करने की आवश्यकता है — ऐसे फ़ंक्शन जो डेटा लौटाते हैं। उपयोगकर्ता प्राप्त करने के लिए रिज़ॉल्वर कार्यान्वयन का उदाहरण:



// graph/schema.resolvers.go (कार्यान्वयन का उदाहरण)func (r *queryResolver) User(ctx context.Context, id string) (*model.User, error) {    // DB से उपयोगकर्ता प्राप्त करने का तर्क    user, err := r.db.GetUserByID(ctx, id)    if err != nil {        return nil, err    }    return user, nil}

func (r *queryResolver) Users(ctx context.Context) ([]*model.User, error) { // सभी उपयोगकर्ताओं की सूची प्राप्त करने का तर्क return r.db.GetAllUsers(ctx)}

// User पर posts फ़ील्ड के लिए रिज़ॉल्वर (नेस्टेड डेटा का समाधान)func (r *userResolver) Posts(ctx context.Context, obj *model.User) ([]*model.Post, error) { // obj वह User ऑब्जेक्ट है जिसके लिए पोस्ट अनुरोधित हैं

अनुशंसाएँ