GraphQL API مع C++: دليل تعليمي خطوة بخطوة للمبتدئين

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

GraphQL API مع C++: دليل تعليمي خطوة بخطوة للمبتدئين



GraphQL هي لغة استعلام حديثة لواجهات API، تتيح للعملاء طلب البيانات التي يحتاجونها فقط. على عكس REST، حيث تكون بنية الاستجابة ثابتة، يوفر GraphQL المرونة والتحكم. في هذا الدليل التعليمي، سنشرح كيفية إنشاء GraphQL API بسيط بلغة C++ من الصفر. ستتعلم كيفية ربط مكتبة graphql-cpp، تعريف المخطط، كتابة المحللات (Resolvers)، واختبار الاستعلامات. المقالة موجهة للمبتدئين الملمين بأساسيات C++.



لماذا C++؟ توفر هذه اللغة أداءً عاليًا، وهو أمر بالغ الأهمية لواجهات API ذات الأحمال العالية. يُستخدم GraphQL بلغة C++ غالبًا في أنظمة الوقت الفعلي، محركات الألعاب، وخدمات الويب عالية التحميل. لنبدأ!



تثبيت وإعداد البيئة



للعمل، نحتاج إلى مترجم يدعم C++17 (مثل GCC 8+ أو Clang 10+)، CMake، ومكتبة graphql-cpp. سنقوم بتثبيت كل ما هو ضروري.



الخطوة 1: تثبيت التبعيات

في Ubuntu/Debian، نفذ:

sudo apt updatesudo apt install build-essential cmake libboost-all-dev libssl-dev


بالنسبة لنظام macOS، استخدم Homebrew:

brew install cmake boost openssl


الخطوة 2: استنساخ مكتبة graphql-cpp

مكتبة graphql-cpp هي تطبيق خفيف الوزن لـ GraphQL بلغة C++. استنسخ المستودع:

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


بعد التثبيت، سننشئ مشروعًا جديدًا. هيكل المجلدات:

my_graphql_api/├── CMakeLists.txt├── src/│   ├── main.cpp│   └── schema.cpp└── include/    └── schema.h


الخطوة 3: إعداد CMakeLists.txt

أنشئ ملف CMakeLists.txt:

cmake_minimum_required(VERSION 3.10)project(GraphQLExample)

set(CMAKE_CXX_STANDARD 17)

find_package(graphql-cpp REQUIRED)find_package(Boost REQUIRED COMPONENTS system)

add_executable(graphql_example src/main.cpp src/schema.cpp)target_include_directories(graphql_example PRIVATE include)target_link_libraries(graphql_example graphql-cpp::graphql-cpp Boost::system)


تعريف مخطط GraphQL



المخطط هو جوهر GraphQL API. يصف أنواع البيانات، الاستعلامات (queries) والتحويرات (mutations). في مثالنا، سننشئ API لإدارة قائمة الكتب.



إنشاء نوع Book

في ملف include/schema.h، سنعلن عن هيكل البيانات ودالة لإنشاء المخطط:

#ifndef SCHEMA_H#define SCHEMA_H

#include <graphql-cpp/graphql.hpp>#include <string>#include <vector>

struct Book { int id; std::string title; std::string author; int year;};

graphql::Schema createBookSchema();

#endif // SCHEMA_H


تنفيذ المخطط

في ملف src/schema.cpp، سنعرف الأنواع والاستعلام الجذري:

#include "schema.h"#include <graphql-cpp/graphql.hpp>#include <vector>#include <memory>

using namespace graphql;

// مخزن مؤقت للكتبstd::vector<Book> books = { {1, "C++ Primer", "Stanley B. Lippman", 2012}, {2, "Effective Modern C++", "Scott Meyers", 2014}};

Schema createBookSchema() { // 1. تعريف نوع Book ObjectType bookType("Book"); bookType.addField("id", Type::NonNull(Type::Int())); bookType.addField("title", Type::NonNull(Type::String())); bookType.addField("author", Type::NonNull(Type::String())); bookType.addField("year", Type::Int());

// 2. تعريف الاستعلام الجذري ObjectType queryType("Query"); queryType.addField("books", Type::List(Type::NonNull(bookType)), [](const auto& args) -> json { json result =

المدونات

توصيات الكتب