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

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

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

ابدأ الدورة

مقدمة: لماذا C++ لـ REST API ليست مزحة

\n

يرتبط C++ تقليديًا ببرمجة الأنظمة والألعاب والحسابات عالية التحميل. ومع ذلك، في السنوات الأخيرة، يُستخدم هذا اللغة بشكل متزايد لإنشاء خدمات الويب و REST API. لماذا؟ لأن C++ يوفر أداءً لا يُصدق وتحكمًا في الذاكرة، وهو أمر بالغ الأهمية لحلول backend عالية التحميل.

\n

في هذا الدليل، سنقوم خلال 30 دقيقة بإنشاء REST API كامل بلغة C++ باستخدام مكتبة cpp-httplib (مكتبة رأس واحدة، لا تتطلب تثبيتًا). ستتعلم:

\n
    \n
  • إعداد خادم HTTP بلغة C++
  • \n
  • معالجة طلبات GET و POST و PUT و DELETE
  • \n
  • العمل مع JSON عبر nlohmann/json
  • \n
  • تجميع وتشغيل المشروع
  • \n
\n

هذه المادة مناسبة لكل من المبتدئين والمطورين ذوي الخبرة الذين يرغبون في تجربة C++ في تطوير الويب.

\n\n

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

\n

للعمل، سنحتاج إلى:

\n
    \n
  • مترجم C++ (g++ أو clang) مع دعم C++17
  • \n
  • مكتبة cpp-httplib (ملف h واحد)
  • \n
  • مكتبة nlohmann/json (ملف hpp واحد)
  • \n
\n

قم بتنزيل كلتا المكتبتين:

\n
# تثبيت cpp-httplib\nwget https://raw.githubusercontent.com/yhirose/cpp-httplib/master/httplib.h\n\n# تثبيت nlohmann/json\nwget https://raw.githubusercontent.com/nlohmann/json/develop/single_include/nlohmann/json.hpp
\n

سيكون هيكل المشروع بسيطًا:

\n
my_rest_api/\n├── main.cpp\n├── httplib.h\n└── json.hpp
\n\n

الخطوة 2: إنشاء خادم HTTP أساسي

\n

لنبدأ بخادم أدنى يستمع على المنفذ 8080 ويستجيب لطلبات GET.

\n

قم بإنشاء ملف main.cpp:

\n
#include "httplib.h"\n#include "json.hpp"\n#include <iostream>\n\nusing namespace httplib;\nusing json = nlohmann::json;\n\nint main() {\n    Server svr;\n\n    // طلب GET إلى الجذر\n    svr.Get("/", [](const Request& req, Response& res) {\n        res.set_content("مرحبًا، REST API بلغة C++!", "text/plain");\n    });\n\n    std::cout << "تم بدء الخادم على http://localhost:8080" << std::endl;\n    svr.listen("0.0.0.0", 8080);\n\n    return 0;\n}
\n

قم بتجميعه وتشغيله:

\n
g++ -std=c++17 -pthread -o server main.cpp\n./server
\n

افتح المتصفح أو استخدم curl http://localhost:8080 — سترى رسالة الترحيب. الخادم يعمل!

\n\n

الخطوة 3: تنفيذ عمليات CRUD مع JSON

\n

الآن سنضيف تخزين البيانات في الذاكرة (متجه بسيط) وننفذ REST API كامل للعمل مع المستخدمين.

\n

الملف المحدّث main.cpp:

\n
#include "httplib.h"\n#include "json.hpp"\n#include <iostream>\n#include <vector>\n#include <string>\n#include <sstream>\n\nusing namespace httplib;\nusing json = nlohmann::json;\n\n// نموذج المستخدم\nstruct User {\n    int id;\n    std::string name;\n    std::string email;\n};\n\n// قاعدة البيانات في الذاكرة\nstd::vector<User> users;\nint next_id = 1;\n\nint main() {\n    Server svr;\n\n    // POST /users - إنشاء مستخدم\n    svr.Post("/users", [](const Request& req, Response& res) {\n        try {\n            auto data = json::parse(req.body);\n            User u;\n            u.id = next_id++;\n            u.name = data["name"];\n            u.email = data["email"];\n            users.push_back(u);\n\n            json response = {{"id", u.id}, {"name", u.name}, {"email", u.email}};\n            res.set_content(response.dump(), "application/json");\n        } catch (...) {\n            res.status = 400;\n            res.set_content("{\\"error\\":\\"JSON غير صالح\\"}", "application/json");\n        }\n    });\n\n    // GET /users - قائمة جميع المستخدمين\n    svr.Get("/users", [](const Request& req, Response& res) {\n                

المدونات

توصيات الكتب