Como escrever uma API REST em C++ em 30 minutos: guia passo a passo

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

Introdução: Por que escrever uma REST API em C++?



C++ é tradicionalmente associado à programação de sistemas, jogos e aplicações de alta carga. No entanto, o C++ moderno (a partir dos padrões C++11/17/20) fornece todas as ferramentas necessárias para o desenvolvimento rápido de serviços web. Escrever uma REST API em C++ pode ser justificado quando é necessária máxima performance, baixo consumo de memória ou integração com código C++ existente (por exemplo, bibliotecas de visão computacional ou cálculos numéricos).



Neste guia, criaremos uma REST API completa em C++ em 30 minutos. Para isso, usaremos a biblioteca leve e elegante Crow. Ela não requer configuração complexa, suporta roteamento, JSON (através de json.hpp) e middleware. Ao final do artigo, você terá um servidor funcional com três endpoints.



Passo 1: Configuração do ambiente e instalação do Crow



Para trabalhar, precisaremos de um compilador com suporte a C++17 (g++ 7+, clang 5+ ou MSVC 2017+) e do sistema de build CMake. Crow é uma biblioteca "header-only", o que simplifica a instalação: basta baixar um único arquivo de cabeçalho.



Instalação

  1. Baixe a versão mais recente do Crow no GitHub (ou use git clone).
  2. Copie a pasta include para o seu projeto.
  3. Instale o nlohmann/json (também header-only) para trabalhar com JSON.


Estrutura do projeto

my_rest_api/├── CMakeLists.txt├── main.cpp└── include/    ├── crow.h    └── json.hpp


CMakeLists.txt

cmake_minimum_required(VERSION 3.10)project(my_rest_api)

set(CMAKE_CXX_STANDARD 17)

include_directories(include)

add_executable(my_rest_api main.cpp)target_link_libraries(my_rest_api pthread)


Build: mkdir build && cd build && cmake .. && make



Passo 2: Criando o servidor básico e as rotas



Crow usa um DSL simples para definir rotas. Vamos criar um servidor que escuta na porta 8080 e processa requisições GET e POST.



Código básico do servidor

#include "crow.h"#include <string>

int main() { crow::SimpleApp app;

// Rota GET simples CROW_ROUTE(app, "/")([](){ return "Bem-vindo à REST API em C++!"; });

// GET com parâmetro de caminho CROW_ROUTE(app, "/user/<int>")([](int user_id){ return crow::response("ID do usuário: " + std::to_string(user_id)); });

app.port(8080).multithreaded().run();}


Este código cria dois endpoints. crow::SimpleApp é a classe principal da aplicação. O método multithreaded() ativa o processamento de requisições em um pool de threads. Inicie o servidor e verifique no navegador http://localhost:8080/.



Tipos de parâmetros nas rotas

Crow suporta os seguintes tipos de parâmetros no caminho:

  • <int> — número inteiro
  • <string> — string
  • <path> — resto do caminho (exemplo: /files/<path>)
  • <float> — número de ponto flutuante


Passo 3: Trabalhando com JSON e requisições POST



Uma REST API de verdade deve ser capaz de receber e retornar JSON. Vamos conectar o nlohmann/json e implementar operações do tipo CRUD.



Exemplo: Um simples "Banco de Dados" em memória

#include "crow.h"#include "json.hpp"#include <unordered_map>#include <memory>

using json = nlohmann::json;

struct Task { int id; std::string title; bool completed;};

std::unordered_map<int, std::shared_ptr<Task>> tasks;int next_id = 1;

int main() { crow::SimpleApp app;

// GET /tasks — obter todas as tarefas CROW_RO

Blogs

Book Recommendations