Wie man ein REST API in C++ in 30 Minuten schreibt: Schritt-für-Schritt-Anleitung

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 eine REST API in C++ schreiben?

C++ wird traditionell mit Systemprogrammierung, Spielen und hochbelasteten Anwendungen assoziiert. Modernes C++ (ab den Standards C++11/17/20) bietet jedoch alle notwendigen Werkzeuge für die schnelle Entwicklung von Webdiensten. Das Schreiben einer REST API in C++ kann gerechtfertigt sein, wenn maximale Leistung, geringer Speicherverbrauch oder die Integration mit bestehendem C++-Code (z. B. Bibliotheken für Computer Vision oder numerische Berechnungen) erforderlich ist.

In diesem Leitfaden erstellen wir in 30 Minuten eine vollwertige REST API in C++. Dazu verwenden wir die leichte und elegante Bibliothek Crow. Sie erfordert keine komplexe Einrichtung, unterstützt Routing, JSON (über json.hpp) und Middleware. Am Ende des Artikels haben Sie einen funktionierenden Server mit drei Endpunkten.

Schritt 1: Einrichtung der Umgebung und Installation von Crow

Für die Arbeit benötigen wir einen Compiler mit C++17-Unterstützung (g++ 7+, clang 5+ oder MSVC 2017+) und das Build-System CMake. Crow ist eine "Header-only"-Bibliothek, was die Installation vereinfacht: Es genügt, eine einzige Header-Datei herunterzuladen.

Installation

  1. Laden Sie die neueste Version von Crow von GitHub herunter (oder verwenden Sie git clone).
  2. Kopieren Sie den Ordner include in Ihr Projekt.
  3. Installieren Sie nlohmann/json (ebenfalls Header-only) für die Arbeit mit JSON.

Projektstruktur

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)

Build: mkdir build && cd build && cmake .. && make

Schritt 2: Erstellung eines grundlegenden Servers und von Routen

Crow verwendet eine einfache DSL zur Definition von Routen. Lassen Sie uns einen Server erstellen, der auf Port 8080 hört und GET- und POST-Anfragen verarbeitet.

Grundlegender Server-Code

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

int main() {
    crow::SimpleApp app;

    // Einfache GET-Route
    CROW_ROUTE(app, "/")([](){
        return "Willkommen zur REST API in C++!";
    });

    // GET mit Pfadparameter
    CROW_ROUTE(app, "/user/<int>")([](int user_id){
        return crow::response("Benutzer-ID: " + std::to_string(user_id));
    });

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

Dieser Code erstellt zwei Endpunkte. crow::SimpleApp ist die Hauptanwendungsklasse. Die Methode multithreaded() aktiviert die Verarbeitung von Anfragen in einem Thread-Pool. Starten Sie den Server und überprüfen Sie im Browser http://localhost:8080/.

Parametertypen in Routen

Crow unterstützt die folgenden Parametertypen im Pfad:

  • <int> — Ganzzahl
  • <string> — Zeichenkette
  • <path> — Rest des Pfades (z. B. /files/<path>)
  • <float> — Gleitkommazahl

Schritt 3: Arbeiten mit JSON und POST-Anfragen

Eine echte REST API muss JSON empfangen und zurückgeben können. Binden wir nlohmann/json ein und implementieren CRUD-ähnliche Operationen.

Beispiel: Einfache "Datenbank" im Speicher

#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 — alle Aufgaben abrufen
    CROW_RO                

Blogs

Buchempfehlungen