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
Observabilité Java : tracing, métriques, logs pour experts
Files d'attente de tâches en TypeScript : guide complet pour débutants
Comment devenir développeur JavaScript : conseils et CV en 2024
Mémoire et ramasse-miettes en Java : ce qui se passe vraiment sous le capot
Limitation des requêtes en JavaScript : comment ne pas faire tomber l'API