Einleitung: Warum C++ für REST API nicht beängstigend ist
Viele Anfänger-Entwickler denken, dass C++ zu komplex für die Erstellung von Webservices ist. Allerdings bietet modernes C++ (ab dem Standard C++11) leistungsstarke und elegante Werkzeuge für die Entwicklung von Hochleistungs-REST-APIs. In dieser Anleitung erstellen wir in 30 Minuten eine vollwertige REST API in C++ unter Verwendung der leichtgewichtigen Bibliothek Crow.
Wir werden lernen, wie man den Server einrichtet, GET- und POST-Anfragen verarbeitet, mit JSON arbeitet und Daten zurückgibt. Am Ende des Artikels haben Sie einen funktionierenden Prototypen, den Sie als Grundlage für Ihre eigenen Projekte verwenden können.
Was ist eine REST API?
REST (Representational State Transfer) ist ein Architekturstil für die Erstellung von Webservices. REST APIs verwenden HTTP-Methoden (GET, POST, PUT, DELETE) zur Verwaltung von Ressourcen. Daten werden normalerweise im JSON-Format übertragen.
1. Umgebungsvorbereitung: Installation der Bibliotheken
Für einen schnellen Start verwenden wir die Bibliothek Crow – ein minimalistisches C++ Webframework, das keine komplexe Einrichtung erfordert. Wir benötigen auch eine Bibliothek für die Arbeit mit JSON – nlohmann/json.
Installation der Abhängigkeiten (Linux/macOS)
# Installieren der erforderlichen Paketesudo apt-get install libboost-all-dev cmake g++
# Herunterladen von Crow (Single-Header-Version)wget https://raw.githubusercontent.com/CrowCpp/Crow/master/include/crow.h
# Herunterladen der JSON-Bibliothekwget https://github.com/nlohmann/json/releases/download/v3.11.2/json.hppInstallation der Abhängigkeiten (Windows mit MinGW)
Für Windows verwenden Sie vcpkg:
vcpkg install crowvcpkg install nlohmann-json2. Erstellen eines einfachen HTTP-Servers in C++
Beginnen wir mit einem Basisserver, der auf Anfragen antwortet. Erstellen Sie eine Datei main.cpp:
#include "crow.h"
int main() { crow::SimpleApp app;
// Einfache GET-Route CROW_ROUTE(app, "/")([](){ return "Hallo Welt! REST API in C++ funktioniert!"; });
// Server auf Port 8080 starten app.port(8080).multithreaded().run();}Kompilieren und starten Sie:
g++ -std=c++17 -pthread main.cpp -o api_server./api_serverÖffnen Sie den Browser und gehen Sie zu http://localhost:8080. Sie sehen eine Begrüßungsnachricht.
3. Hinzufügen von JSON-Verarbeitung und CRUD-Operationen
Jetzt fügen wir JSON-Unterstützung hinzu und implementieren eine einfache In-Memory-Datenbank zur Speicherung von Benutzern.
JSON-Unterstützung aktivieren
#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-Route zum Abrufen der Benutzerliste
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-Route zum Erstellen eines neuen Benutzers
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-Route zum Löschen eines Benutzers
Blogs
Buchempfehlungen
Lesen Sie auch