كيفية كتابة REST API بلغة C++ في 30 دقيقة: عملياً

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

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

ابدأ الدورة

مقدمة: لماذا كتابة REST API بلغة C++؟



REST API (Representational State Transfer) هو نمط معماري للتفاعل بين مكونات التطبيق الموزع عبر الشبكة. عادةً ما يتم اختيار Python (Flask, FastAPI) أو JavaScript (Express.js) أو Java لكتابة REST API. ومع ذلك، تبقى لغة C++ مهملة بشكل غير مستحق. وهذا خطأ.



المكتبات الحديثة مثل Crow و cpp-httplib و Drogon تتيح إنشاء REST API عالية الأداء بلغة C++ في غضون نصف ساعة حرفيًا. بفضل سرعة لغة C++ واستهلاكها المنخفض للذاكرة، فإن هذه الـ APIs مثالية لـ:



  • الخدمات المصغرة ذات المتطلبات العالية للأداء؛
  • الأنظمة المدمجة وأجهزة إنترنت الأشياء (IoT)؛
  • معالجة عدد كبير من الطلبات المتزامنة؛
  • تنفيذ بوابات (Gateways) وخوادم بروكسي (Proxy Servers).


في هذه المقالة، سنقوم عمليًا بإنشاء REST API بسيط بلغة C++ باستخدام مكتبة Crow. سترى أن الأمر ليس أصعب من Python، بل ومن حيث سرعة الأداء فهو أسرع بعدة مرات.



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



لمشروعنا، سنستخدم Crow - وهو إطار عمل ويب مصغر (micro-web framework) بلغة C++، بسيط وسريع جدًا. يدعم التوجيه (routing) والوسائط (middleware) وتسلسل JSON (JSON serialization) ويعمل على أنظمة Windows و Linux و macOS.



المتطلبات

  • مترجم C++17 أو أحدث (GCC 8+, Clang 7+, MSVC 2019+)؛
  • CMake الإصدار 3.14+؛
  • مكتبة asio (يتم تثبيتها تلقائيًا مع Crow)؛
  • مكتبة nlohmann/json (للعمل مع JSON).


تثبيت Crow



Crow هي مكتبة header-only. هذا يعني أنك لست بحاجة إلى تجميعها - يكفي نسخ ملفات الرأس (header files) إلى المشروع. أسهل طريقة هي عبر CMake FetchContent.



قم بإنشاء هيكل المشروع:

rest-api-cpp/├── CMakeLists.txt├── src/│   └── main.cpp└── include/


محتويات ملف CMakeLists.txt:

cmake_minimum_required(VERSION 3.14)project(rest_api_cpp)

set(CMAKE_CXX_STANDARD 17)

# ربط مكتبة Crowinclude(FetchContent)FetchContent_Declare( crow GIT_REPOSITORY https://github.com/ipkn/crow.git GIT_TAG master)FetchContent_MakeAvailable(crow)

# ربط مكتبة nlohmann/jsonFetchContent_Declare( json GIT_REPOSITORY https://github.com/nlohmann/json.git GIT_TAG v3.11.2)FetchContent_MakeAvailable(json)

add_executable(rest_api src/main.cpp)target_link_libraries(rest_api PRIVATE Crow::Crow nlohmann_json::nlohmann_json)


بعد ذلك، قم بتنفيذ:

mkdir build && cd buildcmake ..make


كل شيء جاهز لكتابة الكود.



إنشاء REST API أساسي بلغة C++ باستخدام Crow



سنكتب API بسيطًا لإدارة قائمة المهام (Task Manager). سيدعم أربع طرق HTTP رئيسية: GET, POST, PUT, DELETE.



هيكل الخادم ونقطة النهاية GET



#include <crow.h>#include <nlohmann/json.hpp>#include <vector>#include <string>

using json = nlohmann::json;

struct Task { int id; std::string title; bool completed;};

std::vector<Task> tasks = { {1, "دراسة Crow", false}, {2, "كتابة REST API", false}};int next_id = 3;

int main() { crow::SimpleApp app;

// GET /tasks — الحصول على جميع المهام CROW_ROUTE(app, "/tasks") .methods("GET"_method) ([](){ json j = json::array(); for (const auto& t : tasks) { j.push_back({{"id", t.id}, {"title", t.title}, {"completed", t.completed}}); } return crow::response(j.dump()); });

app.port(8080).multithreaded().run();}


يقوم هذا الكود بتشغيل خادم HTTP على المنفذ 8080. عند إرسال طلب GET إلى /tasks

المدونات

توصيات الكتب