Go में GraphQL: पुस्तकालयों और उपकरणों के लिए पूर्ण गाइड

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

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

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

Go में GraphQL: उपकरणों और पुस्तकालयों का पूर्ण अवलोकन

\n\n

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

\n\n

Go डेवलपर के लिए GraphQL क्यों महत्वपूर्ण है?

\n\n

Go अपने प्रदर्शन, सरलता और उत्कृष्ट समवर्ती समर्थन के लिए जाना जाता है। GraphQL, बदले में, REST API की विशेषता over-fetching (अत्यधिक डेटा लोडिंग) और under-fetching (अपर्याप्त लोडिंग) की समस्या को हल करता है। Go + GraphQL का संयोजन आपको देता है:

\n
    \n
  • टाइप सुरक्षा — Go की सख्त टाइपिंग GraphQL स्कीमा के साथ पूरी तरह से मेल खाती है।
  • \n
  • उच्च प्रदर्शन — Go नेटिव कोड में कंपाइल होता है और तेज़ी से काम करता है।
  • \n
  • क्वेरी में लचीलापन — क्लाइंट स्वयं तय करता है कि उसे कौन से फ़ील्ड चाहिए।
  • \n
\n\n

Go के लिए मुख्य GraphQL लाइब्रेरीज़

\n\n

1. gqlgen (gqlgen.com)

\n\n

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

\n\n

मुख्य विशेषताएं:

\n
    \n
  • स्कीमा से स्वचालित कोड जनरेशन।
  • \n
  • WebSockets के माध्यम से सब्सक्रिप्शन के लिए समर्थन।
  • \n
  • मेटाडेटा ट्रांसफर के लिए कॉन्टेक्स्ट (context.Context) का अंतर्निहित समर्थन।
  • \n
  • जनरेट की गई फ़ाइलों को अनुकूलित करने की क्षमता।
  • \n
\n\n

उपयोग का उदाहरण:

\n\n
// schema.graphql\ntype Query {\n    user(id: ID!): User!\n}\n\ntype User {\n    id: ID!\n    name: String!\n    email: String!\n}
\n\n
// कोड जनरेशन के बाद (go run github.com/99designs/gqlgen init)\n// आपका रिज़ॉल्वर इस तरह दिखेगा:\n\npackage graph\n\nimport (\n    "context"\n    "your-project/graph/model"\n)\n\nfunc (r *queryResolver) User(ctx context.Context, id string) (*model.User, error) {\n    // डेटाबेस से उपयोगकर्ता प्राप्त करने का तर्क\n    return &model.User{\n        ID:    id,\n        Name:  "John Doe",\n        Email: "john@example.com",\n    }, nil\n}
\n\n

2. graphql-go (github.com/graphql-go/graphql)

\n\n

यह लाइब्रेरी Go पर graphql-js का पोर्ट है। gqlgen के विपरीत, यह "code-first" (पहले कोड) दृष्टिकोण का उपयोग करती है। आप एक अलग स्कीमा फ़ाइल के बिना, सीधे Go कोड में टाइप और स्कीमा परिभाषित करते हैं।

\n\n

मुख्य विशेषताएं:

\n
    \n
  • GraphQL विनिर्देश का पूर्ण समर्थन (जून 2018)।
  • \n
  • लचीलापन — आप गतिशील रूप से स्कीमा बना सकते हैं।
  • \n
  • उत्कृष्ट दस्तावेज़ीकरण और उदाहरण।
  • \n
  • समवर्ती क्वेरी निष्पादन के लिए समर्थन।
  • \n
\n\n

उपयोग का उदाहरण:

\n\n
package main\n\nimport (\n    "encoding/json"\n    "fmt"\n    "net/http"\n\n    "github.com/graphql-go/graphql"\n)\n\nvar userType = graphql.NewObject(graphql.ObjectConfig{\n    Name: "User",\n    Fields: graphql.Fields{\n        "id": &graphql.Field{\n            Type: graphql.NewNonNull(graphql.String),\n        },\n        "name": &graphql.Field{\n            Type: graphql.String,\n        },\n    },\n})\n\nvar queryType = graphql.NewObject(graphql.ObjectConfig{\n    Name: "Query",\n    Fields: graphql.Fields{\n        "user": &graphql.Field{\n            Type: userType,\n            Args: graphql.FieldConfigArgument{\n                "id": &graphql.ArgumentConfig{\n                    Type: graphql.NewNonNull(graphql.String),\n                },\n            },\n            Resolve: func(p graphql.ResolveParams) (interface{}, error) {\n                    

अनुशंसाएँ