GraphQL API mit C++: Schritt-für-Schritt-Tutorial für Anfänger

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

GraphQL API mit C++: Schritt-für-Schritt-Tutorial für Anfänger



GraphQL ist eine moderne Abfragesprache für APIs, die es Clients ermöglicht, nur die Daten anzufordern, die sie wirklich benötigen. Im Gegensatz zu REST, wo die Antwortstruktur festgelegt ist, bietet GraphQL Flexibilität und Kontrolle. In diesem Tutorial werden wir durchgehen, wie man eine einfache GraphQL API in C++ von Grund auf erstellt. Sie erfahren, wie Sie die Bibliothek graphql-cpp einbinden, ein Schema definieren, Resolver schreiben und Abfragen testen. Der Artikel richtet sich an Anfänger, die mit den Grundlagen von C++ vertraut sind.



Warum C++? Diese Sprache bietet eine hohe Leistung, die für stark ausgelastete APIs entscheidend ist. GraphQL in C++ wird häufig in Echtzeitsystemen, Spiele-Engines und hochbelasteten Webdiensten verwendet. Los geht's!



Installation und Einrichtung der Umgebung



Für die Arbeit benötigen wir einen Compiler mit C++17-Unterstützung (z. B. GCC 8+ oder Clang 10+), CMake und die Bibliothek graphql-cpp. Installieren wir alles Notwendige.



Schritt 1: Installation der Abhängigkeiten

Führen Sie unter Ubuntu/Debian Folgendes aus:

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


Verwenden Sie für macOS Homebrew:

brew install cmake boost openssl


Schritt 2: Klonen der Bibliothek graphql-cpp

Die Bibliothek graphql-cpp ist eine leichtgewichtige Implementierung von GraphQL in C++. Klonen Sie das Repository:

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


Nach der Installation erstellen wir ein neues Projekt. Die Ordnerstruktur:

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


Schritt 3: Konfiguration von CMakeLists.txt

Erstellen Sie die Datei 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)


Definition des GraphQL-Schemas



Das Schema ist der Kern einer GraphQL API. Es beschreibt die Datentypen, Abfragen (Queries) und Mutationen (Mutations). In unserem Beispiel erstellen wir eine API zur Verwaltung einer Liste von Büchern.



Erstellen des Typs Book

In der Datei include/schema.h deklarieren wir eine Datenstruktur und eine Funktion zum Erstellen des Schemas:

#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


Implementierung des Schemas

In der Datei src/schema.cpp definieren wir die Typen und die Root-Abfrage:

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

using namespace graphql;

// Temporärer Buchspeicherstd::vector<Book> books = { {1, "C++ Primer", "Stanley B. Lippman", 2012}, {2, "Effective Modern C++", "Scott Meyers", 2014}};

Schema createBookSchema() { // 1. Typ Book definieren 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. Root-Abfrage definieren ObjectType queryType("Query"); queryType.addField("books", Type::List(Type::NonNull(bookType)), [](const auto& args) -> json { json result =

Blogs

Buchempfehlungen