C++ में GraphQL: API बनाने के लिए cppgraphqlgen लाइब्रेरी

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

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

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

GraphQL C++ लाइब्रेरी: cppgraphqlgen

\n\n

cppgraphqlgen C++ में GraphQL सर्वर-साइड को लागू करने के लिए एक आधुनिक लाइब्रेरी है। यह डेवलपर्स को C++ की स्टैटिक टाइपिंग के लाभों का उपयोग करके टाइप-सेफ, तेज़ और स्केलेबल API बनाने की अनुमति देती है। लाइब्रेरी GraphQL स्कीमा (.graphql फ़ाइलों) के आधार पर कोड जनरेट करती है, जो मैन्युअल रूप से रिज़ॉल्वर लिखने को कम करती है और त्रुटियों की संभावना को कम करती है।

\n\n

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

\n
    \n
  • स्कीमा से कोड जनरेशन — इनपुट के रूप में schema.graphql फ़ाइल दी जाती है, आउटपुट में C++ क्लासेस और फ़ंक्शन प्राप्त होते हैं।
  • \n
  • टाइप सुरक्षा — सभी GraphQL प्रकार (String, Int, Float, Boolean, ID, Enum, Input, Object) संबंधित C++ प्रकारों में संकलित हो जाते हैं।
  • \n
  • सब्सक्रिप्शन के लिए समर्थन — WebSocket और एसिंक्रोनस स्ट्रीम के माध्यम से कार्यान्वित।
  • \n
  • क्वेरी सत्यापन — GraphQL क्वेरी के सिंटैक्स और सिमैंटिक्स की अंतर्निहित जाँच।
  • \n
  • HTTP के साथ एकीकरण — किसी भी C++ HTTP सर्वर (जैसे, Boost से beast) के ऊपर काम करता है।
  • \n
  • डायरेक्टिव के लिए समर्थन — कार्यक्षमता बढ़ाने के लिए कस्टम डायरेक्टिव।
  • \n
\n\n

स्थापना

\n

cppgraphqlgen स्थापित करने के लिए C++17 समर्थन वाले कंपाइलर और CMake बिल्ड सिस्टम की आवश्यकता है। vcpkg के माध्यम से स्थापना या स्रोत से निर्माण:

\n
# vcpkg के माध्यम से\nvcpkg install cppgraphqlgen\n\n# रिपॉजिटरी से निर्माण\ngit clone https://github.com/microsoft/cppgraphqlgen.git\ncd cppgraphqlgen\nmkdir build && cd build\ncmake .. -DCMAKE_BUILD_TYPE=Release\ncmake --build . --target install
\n\n

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

\n

एक सरल उदाहरण देखें: उपयोगकर्ता और पुस्तक के बारे में जानकारी प्राप्त करने के लिए एक GraphQL स्कीमा बनाएं। पहले schema.graphql स्कीमा परिभाषित करें:

\n
type Query {\n  user(id: ID!): User\n  book(id: ID!): Book\n}\n\ntype User {\n  id: ID!\n  name: String!\n  email: String\n}\n\ntype Book {\n  id: ID!\n  title: String!\n  author: String!\n}
\n\n

कोड जनरेशन (graphqlgen कमांड) के बाद, Generated.h फ़ाइल प्राप्त होती है। अब C++ में रिज़ॉल्वर लिखें:

\n
#include "Generated.h"\n#include <unordered_map>\n\n// डेटा का उदाहरण (वास्तविक प्रोजेक्ट में — डेटाबेस)\nstd::unordered_map<std::string, User> users = {\n    {"1", {"1", "Alice", "alice@example.com"}},\n    {"2", {"2", "Bob", nullptr}}\n};\n\nstd::unordered_map<std::string, Book> books = {\n    {"10", {"10", "C++ Primer", "Lippman"}},\n    {"20", {"20", "Effective Modern C++", "Meyers"}}\n};\n\n// Query.user के लिए रिज़ॉल्वर\nUser resolveGetUser(const std::string& id) {\n    auto it = users.find(id);\n    if (it != users.end()) {\n        return it->second;\n    }\n    throw std::runtime_error("User not found");\n}\n\n// Query.book के लिए रिज़ॉल्वर\nBook resolveGetBook(const std::string& id) {\n    auto it = books.find(id);\n    if (it != books.end()) {\n        return it->second;\n    }\n    throw std::runtime_error("Book not found");\n}
\n\n

अब सर्वर कॉन्फ़िगर करें और क्वेरी प्रोसेसिंग शुरू करें:

\n
#include <graphqlservice/GraphQLService.h>\n#include <beast/http.hpp>\n\nint main() {\n    // स्कीमा के साथ सेवा बनाएं\n    auto service = std::make_shared<graphql::service::GraphQLService>();\n\n    // रिज़ॉल्वर पंजीकृत करें\n    service->addResolver("Query", "user", resolveGetUser);\n    service->addResolver("Query", "book", resolveGetBook);\n\n    // HTTP सर्वर शुरू करें (सरलीकृत)\n    http::server server("0.0.0.0", 8080, service);\n    server.run();\n\n    return 0;\n}
\n\n

त्रुटि प्रबंधन और सत्यापन

\n

लाइब्रेरी स्वचालित रूप से आने वाली क्वेरी की शुद्धता की जाँच करती है। यदि रिज़ॉल्वर कोई अपवाद फेंकता है, तो cppgraphqlgen इसे उपयुक्त कोड के साथ GraphQL त्रुटि में बदल देता है। प्रबंधन का उदाहरण:

\n

                
    
    

अनुशंसाएँ