C++ के लिए GraphQL लाइब्रेरी: graphql-cpp के साथ API कार्यान्वयन

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

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

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

C++ के लिए GraphQL लाइब्रेरी: graphql-cpp



आधुनिक वेब प्रौद्योगिकियों की दुनिया में, GraphQL लचीले और कुशल API बनाने के लिए एक मानक बन गया है। यदि आप C++ में विकास कर रहे हैं और इस प्रोटोकॉल के लिए समर्थन लागू करना चाहते हैं, तो आपको एक विश्वसनीय लाइब्रेरी की आवश्यकता होगी। सबसे अच्छे समाधानों में से एक graphql-cpp है — एक ओपन-सोर्स लाइब्रेरी जो आपको न्यूनतम प्रयास के साथ C++ में पूर्ण GraphQL सर्वर बनाने की अनुमति देती है।



graphql-cpp क्या है?

graphql-cpp एक हल्की लेकिन शक्तिशाली लाइब्रेरी है जो C++14 और उससे ऊपर पर GraphQL विनिर्देश (जून 2018) को लागू करती है। यह सभी आवश्यक घटक प्रदान करती है: क्वेरी पार्सर, टाइप सिस्टम, क्वेरी निष्पादन तंत्र और सब्सक्रिप्शन के लिए समर्थन। लाइब्रेरी तीसरे पक्ष के HTTP फ्रेमवर्क पर निर्भर नहीं है, जिससे इसे एम्बेडेड सिस्टम से लेकर उच्च-लोड सर्वर तक किसी भी प्रोजेक्ट में एकीकृत किया जा सकता है।



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

  • GraphQL स्कीमा का पूर्ण समर्थन: ऑब्जेक्ट, इंटरफ़ेस, यूनियन-प्रकार, एनम, स्केलर और इनपुट-प्रकार।
  • क्वेरी सत्यापन और निष्पादन: जटिल क्वेरी, खंड और निर्देशों के समर्थन के साथ अंतर्निहित सत्यापनकर्ता और निष्पादक।
  • सब्सक्रिप्शन के लिए समर्थन: रिएक्टिव स्ट्रीम के माध्यम से कार्यान्वयन।
  • अनुकूलन योग्य रिज़ॉल्वर: स्कीमा फ़ील्ड से व्यावसायिक तर्क को जोड़ने के लिए लचीली प्रणाली।
  • C++17/20 के साथ संगतता: अधिकतम प्रदर्शन के लिए भाषा की आधुनिक क्षमताओं का उपयोग।
  • कोई निर्भरता नहीं: Boost, POCO या अन्य बाहरी लाइब्रेरी की आवश्यकता नहीं है।


स्थापना और कनेक्शन

लाइब्रेरी header-only (हेडर फ़ाइलें) के रूप में वितरित की जाती है। स्थापित करने के लिए, रिपॉजिटरी को क्लोन करें:

git clone https://github.com/your-repo/graphql-cpp.gitcd graphql-cppmkdir build && cd buildcmake ..makesudo make install

आपके प्रोजेक्ट में, बस एक हेडर फ़ाइल शामिल करें:

#include <graphqlcpp/GraphQL.h>


उदाहरण: एक सरल API बनाना

उपयोगकर्ताओं के बारे में जानकारी प्राप्त करने के लिए एक स्कीमा बनाने पर विचार करें।



1. स्कीमा परिभाषा

using namespace graphqlcpp;

auto schema = Schema::create(R"( type Query { user(id: ID!): User users: [User] } type User { id: ID! name: String! email: String })");


2. रिज़ॉल्वर का कार्यान्वयन

// डेटा स्टोरेज का उदाहरणstd::map<std::string, User> users = {    {"1", {"1", "Alice", "alice@example.com"}},    {"2", {"2", "Bob", "bob@example.com"}}};

// user फ़ील्ड के लिए रिज़ॉल्वरschema->addResolver("Query", "user", [](const ResolverArgs& args) { auto id = args.getArgument<std::string>("id"); if (users.count(id)) return users[id]; return nullptr; // यदि उपयोगकर्ता नहीं मिला तो null});

// users फ़ील्ड के लिए रिज़ॉल्वरschema->addResolver("Query", "users", [](const ResolverArgs&) { std::vector<User> result; for (const auto& [_, user] : users) { result.push_back(user); } return result;});


3. क्वेरी प्रसंस्करण

std::string query = R"(    {        user(id: "1") {            name            email        }    })";

auto result = schema->execute(query);std::cout << result.dump(2) << std::endl;

आउटपुट:

{  "data": {    "user": {      "name": "Alice",      "email": "alice@example.com"    }  }}


शैक्षिक वेबसाइट के लिए लाभ

  • स्पष्ट दस्तावेज़ीकरण: लाइब्रेरी में कोड में विस्तृत टिप्पणियाँ और प्रत्येक प्रकार के लिए उदाहरण हैं।
  • कम प्रवेश सीमा: शुरू करने के लिए, C++ की मूल बातें और बुनियादी अवधारणाओं को जानना पर्याप्त है।

अनुशंसाएँ