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

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

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

ابدأ الدورة

مقدمة: لماذا C++ لـ REST API ليس أمرًا مخيفًا



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



سنتعرف على كيفية إعداد الخادم، ومعالجة طلبات GET و POST، والعمل مع JSON، وإرجاع البيانات. في نهاية المقال، سيكون لديك نموذج أولي عملي يمكن استخدامه كأساس لمشاريعك الخاصة.



ما هو REST API؟



REST (نقل الحالة التمثيلية) هو نمط معماري لإنشاء خدمات الويب. يستخدم REST API طرق HTTP (GET، POST، PUT، DELETE) لإدارة الموارد. عادةً ما يتم نقل البيانات بتنسيق JSON.



1. تجهيز البيئة: تثبيت المكتبات



للبدء السريع، سنستخدم مكتبة Crow - إطار عمل ويب C++ بسيط لا يتطلب إعدادًا معقدًا. سنحتاج أيضًا إلى مكتبة للعمل مع JSON - nlohmann/json.



تثبيت التبعيات (Linux/macOS)



# تثبيت الحزم اللازمةsudo apt-get install libboost-all-dev cmake g++

# تنزيل Crow (نسخة الملف الواحد)wget https://raw.githubusercontent.com/CrowCpp/Crow/master/include/crow.h

# تنزيل مكتبة JSONwget https://github.com/nlohmann/json/releases/download/v3.11.2/json.hpp


تثبيت التبعيات (Windows مع MinGW)



لنظام Windows، استخدم vcpkg:



vcpkg install crowvcpkg install nlohmann-json


2. إنشاء خادم HTTP بسيط بلغة C++



لنبدأ بخادم أساسي يستجيب للطلبات. أنشئ ملفًا باسم main.cpp:



#include "crow.h"

int main() { crow::SimpleApp app;

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

// تشغيل الخادم على المنفذ 8080 app.port(8080).multithreaded().run();}


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



g++ -std=c++17 -pthread main.cpp -o api_server./api_server


افتح المتصفح وانتقل إلى http://localhost:8080. سترى رسالة الترحيب.



3. إضافة معالجة JSON وعمليات CRUD



الآن سنضيف دعم JSON وننفذ قاعدة بيانات بسيطة في الذاكرة لتخزين المستخدمين.



تفعيل دعم JSON



#include "crow.h"#include "json.hpp"#include <vector>#include <string>

using json = nlohmann::json;

struct User { int id; std::string name; std::string email;};

std::vector<User> users;int next_id = 1;


مسار GET للحصول على قائمة المستخدمين



CROW_ROUTE(app, "/users")([](){    json response = json::array();    for (const auto& user : users) {        response.push_back({            {"id", user.id},            {"name", user.name},            {"email", user.email}        });    }    return crow::response(response.dump());});


مسار POST لإنشاء مستخدم جديد



CROW_ROUTE(app, "/users").methods("POST"_method)([](const crow::request& req){    auto body = json::parse(req.body);

User new_user; new_user.id = next_id++; new_user.name = body["name"]; new_user.email = body["email"];

users.push_back(new_user);

json response = { {"id", new_user.id}, {"name", new_user.name}, {"email", new_user.email} };

return crow::response(201, response.dump());});


مسار DELETE لحذف مستخدم





                
                

المدونات

توصيات الكتب