GraphQL API com C++: tutorial passo a passo para iniciantes

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

GraphQL API com C++: tutorial passo a passo para iniciantes



GraphQL é uma linguagem moderna de consultas para APIs que permite aos clientes solicitar apenas os dados de que realmente precisam. Diferente do REST, onde a estrutura da resposta é fixa, o GraphQL oferece flexibilidade e controle. Neste tutorial, vamos explorar como criar uma GraphQL API simples em C++ do zero. Você aprenderá como conectar a biblioteca graphql-cpp, definir o esquema, escrever resolvers e testar consultas. O artigo é voltado para iniciantes familiarizados com os fundamentos do C++.



Por que C++? Esta linguagem oferece alta performance, o que é crítico para APIs com alta carga. GraphQL em C++ é frequentemente usado em sistemas de tempo real, motores de jogos e serviços web de alta demanda. Vamos começar!



Instalação e configuração do ambiente



Para trabalhar, precisaremos de um compilador com suporte a C++17 (por exemplo, GCC 8+ ou Clang 10+), CMake e a biblioteca graphql-cpp. Vamos instalar tudo o que é necessário.



Passo 1: Instalação das dependências

No Ubuntu/Debian, execute:

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


Para macOS, use o Homebrew:

brew install cmake boost openssl


Passo 2: Clonagem da biblioteca graphql-cpp

A biblioteca graphql-cpp é uma implementação leve do GraphQL em C++. Clone o repositório:

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


Após a instalação, crie um novo projeto. Estrutura de pastas:

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


Passo 3: Configuração do CMakeLists.txt

Crie o arquivo 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)


Definição do esquema GraphQL



O esquema é o núcleo da GraphQL API. Ele descreve os tipos de dados, consultas (queries) e mutações (mutations). No nosso exemplo, criaremos uma API para gerenciar uma lista de livros.



Criação do tipo Book

No arquivo include/schema.h, declare a estrutura de dados e a função para criar o 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


Implementação do esquema

No arquivo src/schema.cpp, defina os tipos e a consulta raiz:

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

using namespace graphql;

// Armazenamento temporário de livrosstd::vector<Book> books = { {1, "C++ Primer", "Stanley B. Lippman", 2012}, {2, "Effective Modern C++", "Scott Meyers", 2014}};

Schema createBookSchema() { // 1. Definir o 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. Definir a consulta raiz ObjectType queryType("Query"); queryType.addField("books", Type::List(Type::NonNull(bookType)), [](const auto& args) -> json { json result =

Blogs

Book Recommendations