GraphQL API con C++: tutorial paso a paso para principiantes

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

GraphQL API con C++: tutorial paso a paso para principiantes



GraphQL es un lenguaje de consulta moderno para API que permite a los clientes solicitar solo los datos que realmente necesitan. A diferencia de REST, donde la estructura de la respuesta es fija, GraphQL ofrece flexibilidad y control. En este tutorial, analizaremos cómo crear una API GraphQL simple en C++ desde cero. Aprenderá cómo conectar la biblioteca graphql-cpp, definir el esquema, escribir resolvers y probar consultas. El artículo está dirigido a principiantes familiarizados con los conceptos básicos de C++.



¿Por qué C++? Este lenguaje proporciona un alto rendimiento, lo cual es crítico para API con alta carga. GraphQL en C++ se utiliza a menudo en sistemas en tiempo real, motores de juegos y servicios web de alta demanda. ¡Comencemos!



Instalación y configuración del entorno



Para trabajar necesitaremos un compilador compatible con C++17 (por ejemplo, GCC 8+ o Clang 10+), CMake y la biblioteca graphql-cpp. Instalemos todo lo necesario.



Paso 1: Instalación de dependencias

En Ubuntu/Debian ejecute:

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


Para macOS use Homebrew:

brew install cmake boost openssl


Paso 2: Clonación de la biblioteca graphql-cpp

La biblioteca graphql-cpp es una implementación ligera de GraphQL en C++. Clone el repositorio:

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


Después de la instalación, crearemos un nuevo proyecto. Estructura de carpetas:

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


Paso 3: Configuración de CMakeLists.txt

Cree el archivo 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)


Definición del esquema GraphQL



El esquema es el núcleo de una API GraphQL. Describe los tipos de datos, consultas (queries) y mutaciones (mutations). En nuestro ejemplo, crearemos una API para gestionar una lista de libros.



Creación del tipo Book

En el archivo include/schema.h declararemos la estructura de datos y la función para crear el esquema:

#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


Implementación del esquema

En el archivo src/schema.cpp definiremos los tipos y la consulta raíz:

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

using namespace graphql;

// Almacenamiento temporal de librosstd::vector<Book> books = { {1, "C++ Primer", "Stanley B. Lippman", 2012}, {2, "Effective Modern C++", "Scott Meyers", 2014}};

Schema createBookSchema() { // 1. Definimos el tipo 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. Definimos la consulta raíz ObjectType queryType("Query"); queryType.addField("books", Type::List(Type::NonNull(bookType)), [](const auto& args) -> json { json result =

Blogs

Book Recommendations