Comment écrire une API REST en C++ en 30 minutes : en pratique

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : pourquoi écrire une API REST en C++ ?



REST API (Representational State Transfer) est un style architectural pour l'interaction des composants d'une application distribuée sur un réseau. Habituellement, pour écrire une API REST, on choisit Python (Flask, FastAPI), JavaScript (Express.js) ou Java. Cependant, le C++ reste injustement négligé. Et c'est dommage.



Les bibliothèques modernes, telles que Crow, cpp-httplib et Drogon, permettent de créer des API REST hautes performances en C++ en seulement une demi-heure. Grâce à la vitesse d'exécution du C++ et à sa consommation mémoire minimale, ces API sont idéales pour :



  • les microservices avec des exigences élevées en matière de performance ;
  • les systèmes embarqués et les appareils IoT ;
  • le traitement d'un grand nombre de requêtes simultanées ;
  • la mise en œuvre de passerelles et de serveurs proxy.


Dans cet article, nous allons créer en pratique une API REST simple en C++ en utilisant la bibliothèque Crow. Vous verrez que ce n'est pas plus compliqué qu'en Python, et en termes de vitesse d'exécution, c'est plusieurs fois plus rapide.



Configuration de l'environnement et installation de la bibliothèque Crow



Pour notre projet, nous utiliserons Crow — un micro-framework web C++ minimaliste et très rapide. Il prend en charge le routage, les middleware, la sérialisation JSON et fonctionne sous Windows, Linux et macOS.



Ce dont vous aurez besoin

  • Un compilateur C++17 ou plus récent (GCC 8+, Clang 7+, MSVC 2019+) ;
  • CMake version 3.14+ ;
  • La bibliothèque asio (installée automatiquement avec Crow) ;
  • La bibliothèque nlohmann/json (pour travailler avec JSON).


Installation de Crow



Crow est une bibliothèque header-only. Cela signifie que vous n'avez pas besoin de la compiler — il suffit de copier les fichiers d'en-tête dans votre projet. Le moyen le plus simple est d'utiliser CMake FetchContent.



Créez la structure du projet :

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


Contenu du fichier CMakeLists.txt :

cmake_minimum_required(VERSION 3.14)project(rest_api_cpp)

set(CMAKE_CXX_STANDARD 17)

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

# Inclure nlohmann/jsonFetchContent_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)


Ensuite, exécutez :

mkdir build && cd buildcmake ..make


Tout est prêt pour écrire le code.



Création d'une API REST de base en C++ avec Crow



Écrivons une API simple pour gérer une liste de tâches (Task Manager). Elle prendra en charge quatre méthodes HTTP principales : GET, POST, PUT, DELETE.



Squelette du serveur et endpoint GET



#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, "Étudier Crow", false}, {2, "Écrire une API REST", false}};int next_id = 3;

int main() { crow::SimpleApp app;

// GET /tasks — obtenir toutes les tâches 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();}


Ce code démarre un serveur HTTP sur le port 8080. Lors d'une requête GET à /tasks

Blogs

Book Recommendations