كيفية كتابة REST API بلغة C++ في 30 دقيقة: دليل خطوة بخطوة

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

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

ابدأ الدورة

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



ترتبط لغة C++ تقليديًا ببرمجة الأنظمة والألعاب والتطبيقات عالية التحميل. ومع ذلك، فإن لغة C++ الحديثة (بدءًا من معايير C++11/17/20) توفر جميع الأدوات اللازمة للتطوير السريع لخدمات الويب. قد تكون كتابة REST API بلغة C++ مبررة عندما تكون هناك حاجة إلى أقصى أداء، أو استهلاك منخفض للذاكرة، أو التكامل مع كود C++ موجود (مثل مكتبات الرؤية الحاسوبية أو الحسابات العددية).



في هذا الدليل، سنقوم بإنشاء REST API كامل بلغة C++ خلال 30 دقيقة. للقيام بذلك، سنستخدم مكتبة خفيفة وأنيقة هي Crow. لا تتطلب هذه المكتبة إعدادًا معقدًا، وتدعم التوجيه (routing)، وJSON (عبر json.hpp)، والوسائط الوسيطة (middleware). في نهاية المقال، سيكون لديك خادم عامل بثلاث نقاط نهاية (endpoints).



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



للعمل، نحتاج إلى مترجم يدعم C++17 (g++ 7+، clang 5+ أو MSVC 2017+) ونظام بناء CMake. Crow هي مكتبة "header-only"، مما يبسط التثبيت: يكفي تنزيل ملف رأس واحد.



التثبيت

  1. قم بتنزيل أحدث إصدار من Crow من GitHub (أو استخدم git clone).
  2. انسخ مجلد include إلى مشروعك.
  3. قم بتثبيت nlohmann/json (أيضًا header-only) للعمل مع JSON.


هيكل المشروع

my_rest_api/├── CMakeLists.txt├── main.cpp└── include/    ├── crow.h    └── json.hpp


ملف CMakeLists.txt

cmake_minimum_required(VERSION 3.10)project(my_rest_api)

set(CMAKE_CXX_STANDARD 17)

include_directories(include)

add_executable(my_rest_api main.cpp)target_link_libraries(my_rest_api pthread)


البناء: mkdir build && cd build && cmake .. && make



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



تستخدم Crow لغة خاصة بالمجال (DSL) بسيطة لتحديد المسارات. دعنا ننشئ خادمًا يستمع على المنفذ 8080 ويعالج طلبات GET و POST.



الكود الأساسي للخادم

#include "crow.h"#include <string>

int main() { crow::SimpleApp app;

// مسار GET بسيط CROW_ROUTE(app, "/")([](){ return "مرحبًا بك في REST API بلغة C++!"; });

// GET مع معامل مسار CROW_ROUTE(app, "/user/<int>")([](int user_id){ return crow::response("معرف المستخدم: " + std::to_string(user_id)); });

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


يقوم هذا الكود بإنشاء نقطتي نهاية. crow::SimpleApp هي الفئة الرئيسية للتطبيق. يقوم الأسلوب multithreaded() بتفعيل معالجة الطلبات في مجموعة من الخيوط. قم بتشغيل الخادم وتحقق في المتصفح من http://localhost:8080/.



أنواع المعاملات في المسارات

تدعم Crow أنواع المعاملات التالية في المسار:

  • <int> — عدد صحيح
  • <string> — سلسلة نصية
  • <path> — باقي المسار (مثل /files/<path>)
  • <float> — رقم عشري


الخطوة 3: العمل مع JSON وطلبات POST



يجب أن يكون REST API الحقيقي قادرًا على استقبال وإرجاع JSON. سنقوم بتوصيل nlohmann/json وتنفيذ عمليات تشبه CRUD.



مثال: "قاعدة بيانات" بسيطة في الذاكرة

#include "crow.h"#include "json.hpp"#include <unordered_map>#include <memory>

using json = nlohmann::json;

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

std::unordered_map<int, std::shared_ptr<Task>> tasks;int next_id = 1;

int main() { crow::SimpleApp app;

// GET /tasks — الحصول على جميع المهام CROW_RO

المدونات

توصيات الكتب