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

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?



REST API (Representational State Transfer) ist ein Architekturstil für die Interaktion von Komponenten einer verteilten Anwendung im Netzwerk. Normalerweise wählt man für die Entwicklung einer REST API Python (Flask, FastAPI), JavaScript (Express.js) oder Java. C++ wird jedoch zu Unrecht übersehen. Zu Unrecht.



Moderne Bibliotheken wie Crow, cpp-httplib und Drogon ermöglichen es, leistungsstarke REST APIs in C++ buchstäblich in einer halben Stunde zu erstellen. Dank der Geschwindigkeit von C++ und dem minimalen Speicherverbrauch eignen sich solche APIs ideal für:



  • Microservices mit hohen Leistungsanforderungen;
  • eingebettete Systeme und IoT-Geräte;
  • die Verarbeitung einer großen Anzahl paralleler Anfragen;
  • die Implementierung von Gateways und Proxy-Servern.


In diesem Artikel werden wir in der Praxis eine einfache REST API in C++ mit der Bibliothek Crow erstellen. Sie werden sehen, dass es nicht komplizierter ist als in Python, aber in Bezug auf die Geschwindigkeit um ein Vielfaches schneller.



Einrichtung der Umgebung und Installation der Bibliothek Crow



Für unser Projekt verwenden wir Crow – ein minimalistisches und sehr schnelles C++ Micro-Web-Framework. Es unterstützt Routing, Middleware, JSON-Serialisierung und funktioniert unter Windows, Linux und macOS.



Was wird benötigt

  • Ein C++17-Compiler oder neuer (GCC 8+, Clang 7+, MSVC 2019+);
  • CMake Version 3.14+;
  • Die Bibliothek asio (wird automatisch mit Crow installiert);
  • Die Bibliothek nlohmann/json (für die Arbeit mit JSON).


Installation von Crow



Crow ist eine Header-Only-Bibliothek. Das bedeutet, dass Sie sie nicht kompilieren müssen – es reicht, die Header-Dateien in das Projekt zu kopieren. Der einfachste Weg ist über CMake FetchContent.



Erstellen Sie die Projektstruktur:

rest-api-cpp/├── CMakeLists.txt├── src/│   └── main.cpp└── include/


Inhalt der Datei CMakeLists.txt:

cmake_minimum_required(VERSION 3.14)project(rest_api_cpp)

set(CMAKE_CXX_STANDARD 17)

# Crow einbindeninclude(FetchContent)FetchContent_Declare( crow GIT_REPOSITORY https://github.com/ipkn/crow.git GIT_TAG master)FetchContent_MakeAvailable(crow)

# nlohmann/json einbindenFetchContent_Declare( json GIT_REPOSITORY https://github.com/nlohmann/json.git GIT_TAG v3.11.2)FetchContent_MakeAvailable(json)

add_executable(rest_api src/main.cpp)target_link_libraries(rest_api PRIVATE Crow::Crow nlohmann_json::nlohmann_json)


Führen Sie danach Folgendes aus:

mkdir build && cd buildcmake ..make


Alles ist bereit zum Schreiben des Codes.



Erstellung einer grundlegenden REST API in C++ mit Crow



Wir schreiben eine einfache API zur Verwaltung einer Aufgabenliste (Task Manager). Sie wird die vier wichtigsten HTTP-Methoden unterstützen: GET, POST, PUT, DELETE.



Grundgerüst des Servers und GET-Endpunkt



#include <crow.h>#include <nlohmann/json.hpp>#include <vector>#include <string>

using json = nlohmann::json;

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

std::vector<Task> tasks = { {1, "Crow lernen", false}, {2, "REST API schreiben", false}};int next_id = 3;

int main() { crow::SimpleApp app;

// GET /tasks — alle Aufgaben abrufen CROW_ROUTE(app, "/tasks") .methods("GET"_method) ([](){ json j = json::array(); for (const auto& t : tasks) { j.push_back({{"id", t.id}, {"title", t.title}, {"completed", t.completed}}); } return crow::response(j.dump()); });

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


Dieser Code startet einen HTTP-Server auf Port 8080. Bei einer GET-Anfrage an /tasks

Blogs

Buchempfehlungen