Introduction : Pourquoi C++ pour une API REST n'est pas effrayant
De nombreux développeurs débutants pensent que C++ est trop complexe pour créer des services web. Cependant, le C++ moderne (à partir de la norme C++11) fournit des outils puissants et élégants pour développer des API REST haute performance. Dans ce guide, nous allons créer en 30 minutes une API REST complète en C++ en utilisant la bibliothèque légère Crow.
Nous verrons comment configurer le serveur, traiter les requêtes GET et POST, travailler avec JSON et renvoyer des données. À la fin de l'article, vous aurez un prototype fonctionnel que vous pourrez utiliser comme base pour vos projets.
Qu'est-ce qu'une API REST ?
REST (Representational State Transfer) est un style architectural pour créer des services web. Une API REST utilise les méthodes HTTP (GET, POST, PUT, DELETE) pour gérer les ressources. Les données sont généralement transmises au format JSON.
1. Préparation de l'environnement : installation des bibliothèques
Pour un démarrage rapide, nous utiliserons la bibliothèque Crow — un framework web C++ minimaliste qui ne nécessite pas de configuration complexe. Nous aurons également besoin de la bibliothèque pour travailler avec JSON — nlohmann/json.
Installation des dépendances (Linux/macOS)
# Installation des paquets nécessairessudo apt-get install libboost-all-dev cmake g++
# Téléchargement de Crow (version à en-tête unique)wget https://raw.githubusercontent.com/CrowCpp/Crow/master/include/crow.h
# Téléchargement de la bibliothèque JSONwget https://github.com/nlohmann/json/releases/download/v3.11.2/json.hppInstallation des dépendances (Windows avec MinGW)
Pour Windows, utilisez vcpkg :
vcpkg install crowvcpkg install nlohmann-json2. Création d'un serveur HTTP simple en C++
Commençons par un serveur de base qui répondra aux requêtes. Créez le fichier main.cpp :
#include "crow.h"
int main() { crow::SimpleApp app;
// Route GET simple CROW_ROUTE(app, "/")([](){ return "Bonjour le monde ! L'API REST en C++ fonctionne !"; });
// Lancement du serveur sur le port 8080 app.port(8080).multithreaded().run();}Compilez et exécutez :
g++ -std=c++17 -pthread main.cpp -o api_server./api_serverOuvrez le navigateur et allez sur http://localhost:8080. Vous verrez un message de bienvenue.
3. Ajout du traitement JSON et des opérations CRUD
Ajoutons maintenant la prise en charge de JSON et implémentons une simple base de données en mémoire pour stocker les utilisateurs.
Activation de la prise en charge 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;Route GET pour obtenir la liste des utilisateurs
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());});Route POST pour créer un nouvel utilisateur
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());});Route DELETE pour supprimer un utilisateur
Blogs
Book Recommendations
Lire aussi
Fonctions Serverless en C# sur AWS Lambda : guide complet de A à Z
C++ en 2025 : quoi de neuf ? Guide complet pour débutants
JSON en C# dynamic en 2025 : désérialisation sans douleur
Travailler avec JSON en C# : analyse et sérialisation pour débutants
Déploiement de Rust sur Kubernetes : guide pratique de base