API GraphQL avec C++ : tutoriel pas à pas pour débutants

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

API GraphQL avec C++ : tutoriel pas à pas pour débutants



GraphQL est un langage de requête moderne pour les API qui permet aux clients de demander uniquement les données dont ils ont réellement besoin. Contrairement à REST, où la structure de la réponse est fixe, GraphQL offre flexibilité et contrôle. Dans ce tutoriel, nous allons voir comment créer une API GraphQL simple en C++ à partir de zéro. Vous apprendrez à connecter la bibliothèque graphql-cpp, à définir un schéma, à écrire des résolveurs et à tester les requêtes. Cet article est destiné aux débutants connaissant les bases du C++.



Pourquoi le C++ ? Ce langage offre des performances élevées, ce qui est essentiel pour les API à forte charge. GraphQL en C++ est souvent utilisé dans les systèmes temps réel, les moteurs de jeux et les services web à forte charge. Commençons !



Installation et configuration de l'environnement



Pour travailler, nous aurons besoin d'un compilateur prenant en charge C++17 (par exemple, GCC 8+ ou Clang 10+), de CMake et de la bibliothèque graphql-cpp. Installons tout le nécessaire.



Étape 1 : Installation des dépendances

Sous Ubuntu/Debian, exécutez :

sudo apt updatesudo apt install build-essential cmake libboost-all-dev libssl-dev


Pour macOS, utilisez Homebrew :

brew install cmake boost openssl


Étape 2 : Clonage de la bibliothèque graphql-cpp

La bibliothèque graphql-cpp est une implémentation légère de GraphQL en C++. Clonez le dépôt :

git clone https://github.com/your-repo/graphql-cpp.gitcd graphql-cppmkdir build && cd buildcmake .. -DCMAKE_BUILD_TYPE=Releasemake -j4sudo make install


Après l'installation, créons un nouveau projet. Structure des dossiers :

my_graphql_api/├── CMakeLists.txt├── src/│   ├── main.cpp│   └── schema.cpp└── include/    └── schema.h


Étape 3 : Configuration de CMakeLists.txt

Créez le fichier CMakeLists.txt :

cmake_minimum_required(VERSION 3.10)project(GraphQLExample)

set(CMAKE_CXX_STANDARD 17)

find_package(graphql-cpp REQUIRED)find_package(Boost REQUIRED COMPONENTS system)

add_executable(graphql_example src/main.cpp src/schema.cpp)target_include_directories(graphql_example PRIVATE include)target_link_libraries(graphql_example graphql-cpp::graphql-cpp Boost::system)


Définition du schéma GraphQL



Le schéma est le cœur de l'API GraphQL. Il décrit les types de données, les requêtes (queries) et les mutations (mutations). Dans notre exemple, nous allons créer une API pour gérer une liste de livres.



Création du type Book

Dans le fichier include/schema.h, déclarez la structure de données et la fonction pour créer le schéma :

#ifndef SCHEMA_H#define SCHEMA_H

#include <graphql-cpp/graphql.hpp>#include <string>#include <vector>

struct Book { int id; std::string title; std::string author; int year;};

graphql::Schema createBookSchema();

#endif // SCHEMA_H


Implémentation du schéma

Dans le fichier src/schema.cpp, définissons les types et la requête racine :

#include "schema.h"#include <graphql-cpp/graphql.hpp>#include <vector>#include <memory>

using namespace graphql;

// Stockage temporaire des livresstd::vector<Book> books = { {1, "C++ Primer", "Stanley B. Lippman", 2012}, {2, "Effective Modern C++", "Scott Meyers", 2014}};

Schema createBookSchema() { // 1. Définir le type Book ObjectType bookType("Book"); bookType.addField("id", Type::NonNull(Type::Int())); bookType.addField("title", Type::NonNull(Type::String())); bookType.addField("author", Type::NonNull(Type::String())); bookType.addField("year", Type::Int());

// 2. Définir la requête racine ObjectType queryType("Query"); queryType.addField("books", Type::List(Type::NonNull(bookType)), [](const auto& args) -> json { json result =

Blogs

Book Recommendations