Crow — le micro-framework web pour C++
1. Qu'est-ce que Crow et pourquoi l'utiliser ?
Crow est un micro-framework web léger, rapide et moderne pour le langage C++, inspiré du célèbre framework Python Flask. Il est conçu pour créer des API REST, des services web et des applications web simples avec un minimum de code, sans configuration complexe. Crow est écrit en C++17/20 et utilise les bibliothèques asio (ou boost.asio) pour le traitement asynchrone des requêtes, ce qui en fait l'une des solutions les plus performantes de sa catégorie.
Pourquoi utiliser Crow ? Si vous avez besoin de déployer rapidement un serveur HTTP en C++ pour traiter des requêtes JSON, servir des fichiers statiques ou créer un microservice, Crow est le choix idéal. Contrairement aux frameworks lourds comme drogon ou pistache, Crow est minimaliste, possède une API simple et ne nécessite ni génération de code ni macros complexes. Il est parfait pour les systèmes embarqués, les appareils IoT, les serveurs de jeux et tous les scénarios où la vitesse et la faible consommation de mémoire sont cruciales.
Crow prend en charge le routage (y compris les paramètres dynamiques dans les URL), les middleware, la gestion du JSON (via une bibliothèque intégrée ou nlohmann/json), les WebSockets, le CORS, le multipart/form-data et bien plus encore. Le framework est activement développé, dispose d'une bonne documentation et d'une communauté stable.
2. Installation
Crow est une bibliothèque header-only (dans la plupart des cas), donc l'installation se résume à cloner le dépôt et à inclure les fichiers d'en-tête. Cependant, pour compiler les exemples et les projets, il est recommandé d'utiliser CMake.
Méthode 1 : Clonage (recommandé pour le développement)
git clone https://github.com/CrowCpp/Crow.git
cd Crow
mkdir build
cd build
cmake ..
make
sudo make install
Méthode 2 : Utilisation de vcpkg
vcpkg install crow
Méthode 3 : Intégration via CMake FetchContent
include(FetchContent)
FetchContent_Declare(
crow
GIT_REPOSITORY https://github.com/CrowCpp/Crow.git
GIT_TAG v1.0.0
)
FetchContent_MakeAvailable(crow)
target_link_libraries(votre_projet PRIVATE Crow::Crow)
Important : Crow nécessite un compilateur prenant en charge C++17 (gcc 8+, clang 7+, MSVC 2019+). La bibliothèque asio (ou boost.asio) est également requise. Si vous utilisez vcpkg, les dépendances seront installées automatiquement.
3. Démarrage rapide — exemple minimal fonctionnel
Créez un fichier main.cpp avec le contenu suivant :
#include "crow.h"
int main() {
crow::SimpleApp app;
// Définir une route pour l'URL racine
CROW_ROUTE(app, "/")([](){
return "Bonjour, Crow !";
});
// Lancer le serveur sur le port 8080
app.port(8080).multithreaded().run();
}
Compilez et exécutez :
g++ -std=c++17 -pthread main.cpp -o crow_server
./crow_server
Ouvrez votre navigateur et allez sur http://localhost:8080. Vous verrez le message de bienvenue.
4. Méthodes / fonctions / classes principales
4.1. crow::SimpleApp
Signature : class SimpleApp : public crow::App<Middleware...>
Fonction : Classe principale de l'application. Gère les routes, les middleware et le cycle de vie du serveur. SimpleApp est une version préconfigurée
Aussi dans la bibliothèque
Redis-rs pour Rust : guide complet avec exemples
Apprentissage automatique en Swift : Core ML, Create ML, TensorFlow Swift et Turi Create
Travailler avec Excel en JavaScript (Node.js) : bibliothèques et outils