Como escrever uma REST API em C++ em 30 minutos: na prática

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++?



REST API (Representational State Transfer) é um estilo arquitetônico para interação de componentes de aplicações distribuídas em rede. Geralmente, para escrever uma REST API, escolhe-se Python (Flask, FastAPI), JavaScript (Express.js) ou Java. No entanto, C++ permanece injustamente negligenciado. E é uma pena.



Bibliotecas modernas como Crow, cpp-httplib e Drogon permitem criar REST APIs de alto desempenho em C++ em literalmente meia hora. Graças à velocidade do C++ e ao consumo mínimo de memória, essas APIs são ideais para:



  • microsserviços com altos requisitos de desempenho;
  • sistemas embarcados e dispositivos IoT;
  • processamento de um grande número de requisições simultâneas;
  • implementação de gateways e servidores proxy.


Neste artigo, criaremos na prática uma REST API simples em C++ usando a biblioteca Crow. Você verá que não é mais difícil do que em Python, e em termos de velocidade de execução, é muitas vezes mais rápido.



Configuração do ambiente e instalação da biblioteca Crow



Para nosso projeto, usaremos Crow — um micro-framework web C++ minimalista e muito rápido. Ele suporta roteamento, middleware, serialização JSON e funciona em Windows, Linux e macOS.



O que será necessário

  • Compilador C++17 ou superior (GCC 8+, Clang 7+, MSVC 2019+);
  • CMake versão 3.14+;
  • Biblioteca asio (instalada automaticamente com Crow);
  • Biblioteca nlohmann/json (para trabalhar com JSON).


Instalação do Crow



Crow é uma biblioteca header-only. Isso significa que você não precisa compilá-la — basta copiar os arquivos de cabeçalho para o projeto. A maneira mais simples é através do CMake FetchContent.



Crie a estrutura do projeto:

rest-api-cpp/├── CMakeLists.txt├── src/│   └── main.cpp└── include/


Conteúdo do arquivo CMakeLists.txt:

cmake_minimum_required(VERSION 3.14)project(rest_api_cpp)

set(CMAKE_CXX_STANDARD 17)

# Inclui Crowinclude(FetchContent)FetchContent_Declare( crow GIT_REPOSITORY https://github.com/ipkn/crow.git GIT_TAG master)FetchContent_MakeAvailable(crow)

# Inclui nlohmann/jsonFetchContent_Declare( json GIT_REPOSITORY https://github.com/nlohmann/json.git GIT_TAG v3.11.2)FetchContent_MakeAvailable(json)

add_executable(rest_api src/main.cpp)target_link_libraries(rest_api PRIVATE Crow::Crow nlohmann_json::nlohmann_json)


Depois disso, execute:

mkdir build && cd buildcmake ..make


Tudo pronto para escrever o código.



Criação de uma REST API básica em C++ com Crow



Vamos escrever uma API simples para gerenciar uma lista de tarefas (Task Manager). Ela suportará quatro métodos HTTP principais: GET, POST, PUT, DELETE.



Estrutura do servidor e endpoint GET



#include <crow.h>#include <nlohmann/json.hpp>#include <vector>#include <string>

using json = nlohmann::json;

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

std::vector<Task> tasks = { {1, "Estudar Crow", false}, {2, "Escrever REST API", false}};int next_id = 3;

int main() { crow::SimpleApp app;

// GET /tasks — obter todas as tarefas CROW_ROUTE(app, "/tasks") .methods("GET"_method) ([](){ json j = json::array(); for (const auto& t : tasks) { j.push_back({{"id", t.id}, {"title", t.title}, {"completed", t.completed}}); } return crow::response(j.dump()); });

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


Este código inicia um servidor HTTP na porta 8080. Quando uma requisição GET é feita para /tasks

Blogs

Book Recommendations