Wie man in 30 Minuten ein REST API in C++ schreibt: Schnellstart

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: Warum C++ für REST API?

C++ wird traditionell mit Systemprogrammierung, Spielen und Hochlastanwendungen assoziiert. Allerdings ermöglicht modernes C++ (C++17 und C++20 Standards) in Kombination mit leichtgewichtigen Bibliotheken die Erstellung schneller und effizienter Webdienste. Wenn Sie eine REST-API benötigen, die Tausende von Anfragen pro Sekunde mit minimaler Latenz verarbeitet, ist C++ eine ausgezeichnete Wahl.

In diesem Artikel erstellen wir in 30 Minuten eine vollwertige REST-API in C++ mit der Crow-Bibliothek. Dies ist ein Mini-Framework ähnlich wie Python Flask, jedoch in C++ geschrieben. Wir richten Routen ein, lernen JSON zu parsen und Antworten zurückzugeben.

Schritt 1: Umgebungseinrichtung und Installation von Crow

Zum Arbeiten benötigen wir einen Compiler mit C++17-Unterstützung (GCC 7+, Clang 5+, MSVC 2019+) und einen Abhängigkeitsmanager wie vcpkg oder Conan. Der einfachste Weg ist, Crow als Header-Only-Datei herunterzuladen.

1.1 Installation über vcpkg (empfohlen)

Wenn Sie vcpkg installiert haben, führen Sie den Befehl aus:

vcpkg install crow

Geben Sie dann beim Kompilieren den Pfad zu den Bibliotheken an:

g++ main.cpp -std=c++17 -I/pfad/zu/vcpkg/installed/x64-linux/include -lpthread -o server

1.2 Manuelle Installation (Header-Only)

Laden Sie die neueste Version von Crow von GitHub herunter. Sie benötigen nur die Datei crow_all.h (All-in-One). Platzieren Sie sie in Ihrem Projektordner.

Schritt 2: Erstellen eines einfachen Servers mit zwei Endpunkten

Lassen Sie uns einen minimalen Server schreiben, der auf Port 8080 lauscht und auf GET- und POST-Anfragen antwortet. Erstellen Sie eine Datei main.cpp.

2.1 Grundlegender Server-Code

#include "crow_all.h"

int main() {
    crow::SimpleApp app;

    // GET-Endpunkt: Startseite
    CROW_ROUTE(app, "/")([](){
        return "Hallo, REST API auf C++!";
    });

    // GET-Endpunkt: /api/status
    CROW_ROUTE(app, "/api/status")([](){
        crow::json::wvalue response;
        response["status"] = "ok";
        response["message"] = "Server läuft";
        return response;
    });

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

Kompilieren und ausführen:

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

Gehen Sie nun in Ihrem Browser zu http://localhost:8080/api/status — Sie sehen eine JSON-Antwort.

Schritt 3: Arbeiten mit JSON und Verarbeiten von POST-Anfragen

Eine echte REST-API beinhaltet den Empfang von Daten vom Client. Lernen wir, JSON im Anforderungstext zu akzeptieren.

3.1 POST-Endpunkt zum Erstellen eines Benutzers

#include "crow_all.h"
#include <string>
#include <unordered_map>

int main() {
    crow::SimpleApp app;
    // Einfacher In-Memory-Speicher (zur Demonstration)
    std::unordered_map<int, std::string> users;
    int next_id = 1;

    // POST /api/users — Benutzer erstellen
    CROW_ROUTE(app, "/api/users").methods("POST"_method)([&](const crow::request& req){
        auto body = crow::json::load(req.body);
        if (!body || !body.has("name")) {
            return crow::response(400, "Feld 'name' fehlt");
        }
        std::string name = body["name"].s();
        int id = next_id++;
        users[id] = name;

        crow::json::wvalue response;
        response["id"] = id;
        response["name"] = name;
        return crow::response(201, response);
    });

    // GET /api/users/{id} — Benutzer abrufen
    CROW_ROUTE(app, "/api/users/<int>")([&](int id){
        auto it = users.find(id);
        if (it == users.end()) {
            return crow::response(404, "Benutzer nicht gefunden");
        }
        crow::json::wvalue response;
        response["id"] = id;
        response["name"] = it->second;
        return crow::response(respon                

Blogs

Buchempfehlungen