Introdução: Por que C++ para API REST não é assustador
Muitos desenvolvedores iniciantes acham que C++ é muito complexo para criar serviços web. No entanto, o C++ moderno (a partir do padrão C++11) oferece ferramentas poderosas e elegantes para o desenvolvimento de APIs REST de alto desempenho. Neste guia, em 30 minutos criaremos uma API REST completa em C++ usando a biblioteca leve Crow.
Vamos entender como configurar o servidor, processar requisições GET e POST, trabalhar com JSON e retornar dados. Ao final do artigo, você terá um protótipo funcional que pode ser usado como base para seus projetos.
O que é uma API REST?
REST (Representational State Transfer) é um estilo arquitetural para criar serviços web. APIs REST usam métodos HTTP (GET, POST, PUT, DELETE) para gerenciar recursos. Os dados geralmente são transmitidos no formato JSON.
1. Preparação do ambiente: instalação das bibliotecas
Para um início rápido, usaremos a biblioteca Crow — um framework web C++ minimalista que não requer configuração complexa. Também precisaremos de uma biblioteca para trabalhar com JSON — nlohmann/json.
Instalação das dependências (Linux/macOS)
# Instalamos os pacotes necessáriossudo apt-get install libboost-all-dev cmake g++
# Baixamos o Crow (versão single-header)wget https://raw.githubusercontent.com/CrowCpp/Crow/master/include/crow.h
# Baixamos a biblioteca JSONwget https://github.com/nlohmann/json/releases/download/v3.11.2/json.hppInstalação das dependências (Windows com MinGW)
Para Windows, use vcpkg:
vcpkg install crowvcpkg install nlohmann-json2. Criando um servidor HTTP simples em C++
Vamos começar com um servidor básico que responderá a requisições. Crie o arquivo main.cpp:
#include "crow.h"
int main() { crow::SimpleApp app;
// Rota GET simples CROW_ROUTE(app, "/")([](){ return "Olá, mundo! API REST em C++ funcionando!"; });
// Iniciamos o servidor na porta 8080 app.port(8080).multithreaded().run();}Compile e execute:
g++ -std=c++17 -pthread main.cpp -o api_server./api_serverAbra o navegador e acesse http://localhost:8080. Você verá a mensagem de boas-vindas.
3. Adicionando processamento JSON e operações CRUD
Agora vamos adicionar suporte a JSON e implementar um banco de dados simples em memória para armazenar usuários.
Incluindo suporte a JSON
#include "crow.h"#include "json.hpp"#include <vector>#include <string>
using json = nlohmann::json;
struct User { int id; std::string name; std::string email;};
std::vector<User> users;int next_id = 1;Rota GET para obter lista de usuários
CROW_ROUTE(app, "/users")([](){ json response = json::array(); for (const auto& user : users) { response.push_back({ {"id", user.id}, {"name", user.name}, {"email", user.email} }); } return crow::response(response.dump());});Rota POST para criar um novo usuário
CROW_ROUTE(app, "/users").methods("POST"_method)([](const crow::request& req){ auto body = json::parse(req.body);
User new_user; new_user.id = next_id++; new_user.name = body["name"]; new_user.email = body["email"];
users.push_back(new_user);
json response = { {"id", new_user.id}, {"name", new_user.name}, {"email", new_user.email} };
return crow::response(201, response.dump());});Rota DELETE para remover um usuário
Blogs
Book Recommendations
Leia também
Fluxo de trabalho Git para desenvolvedores Swift: do commit ao lançamento sem dor
Go para aprendizado de máquina: possibilidades e limitações na prática
Otimização de desempenho de aplicações Java: melhores práticas e ferramentas
Injeção de Dependência em C++: guia completo para iniciantes
Programação Funcional em Swift: Fundamentos e Exemplos