Como escrever uma REST API em C++ em 30 minutos: início rápido

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 C++ para REST API?

C++ é tradicionalmente associado à programação de sistemas, jogos e aplicações de alta carga. No entanto, o C++ moderno (padrões C++17 e C++20) combinado com bibliotecas leves permite criar serviços web rápidos e eficientes. Se você precisa de uma REST API que processe milhares de requisições por segundo com latência mínima, C++ é uma excelente escolha.

Neste artigo, criaremos uma REST API completa em C++ em 30 minutos usando a biblioteca Crow. Este é um mini-framework similar ao Python Flask, mas escrito em C++. Configuraremos rotas, aprenderemos a analisar JSON e retornar respostas.

Passo 1: Configuração do Ambiente e Instalação do Crow

Para trabalhar, precisamos de um compilador com suporte a C++17 (GCC 7+, Clang 5+, MSVC 2019+) e um gerenciador de dependências como vcpkg ou Conan. A maneira mais fácil é baixar o Crow como um arquivo somente de cabeçalho.

1.1 Instalação via vcpkg (recomendado)

Se você tem o vcpkg instalado, execute o comando:

vcpkg install crow

Em seguida, ao compilar, especifique o caminho para as bibliotecas:

g++ main.cpp -std=c++17 -I/caminho/para/vcpkg/installed/x64-linux/include -lpthread -o server

1.2 Instalação manual (somente cabeçalho)

Baixe a versão mais recente do Crow do GitHub. Você só precisa do arquivo crow_all.h (tudo-em-um). Coloque-o na pasta do seu projeto.

Passo 2: Criando um Servidor Simples com Dois Endpoints

Vamos escrever um servidor mínimo que escuta na porta 8080 e responde a requisições GET e POST. Crie um arquivo main.cpp.

2.1 Código Básico do Servidor

#include "crow_all.h"

int main() {
    crow::SimpleApp app;

    // Endpoint GET: página raiz
    CROW_ROUTE(app, "/")([](){
        return "Olá, REST API em C++!";
    });

    // Endpoint GET: /api/status
    CROW_ROUTE(app, "/api/status")([](){
        crow::json::wvalue response;
        response["status"] = "ok";
        response["message"] = "Servidor está rodando";
        return response;
    });

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

Compile e execute:

g++ main.cpp -std=c++17 -lpthread -o api_server
./api_server

Agora vá para http://localhost:8080/api/status no seu navegador — você verá uma resposta JSON.

Passo 3: Trabalhando com JSON e Manipulando Requisições POST

Uma REST API real envolve receber dados do cliente. Vamos aprender a aceitar JSON no corpo da requisição.

3.1 Endpoint POST para Criar um Usuário

#include "crow_all.h"
#include <string>
#include <unordered_map>

int main() {
    crow::SimpleApp app;
    // Armazenamento simples em memória (para demonstração)
    std::unordered_map<int, std::string> users;
    int next_id = 1;

    // POST /api/users — criar um usuário
    CROW_ROUTE(app, "/api/users").methods("POST"_method)([&](const crow::request& req){
        auto body = crow::json::load(req.body);
        if (!body || !body.has("name")) {
            return crow::response(400, "Campo 'name' ausente");
        }
        std::string name = body["name"].s();
        int id = next_id++;
        users[id] = name;

        crow::json::wvalue response;
        response["id"] = id;
        response["name"] = name;
        return crow::response(201, response);
    });

    // GET /api/users/{id} — obter um usuário
    CROW_ROUTE(app, "/api/users/<int>")([&](int id){
        auto it = users.find(id);
        if (it == users.end()) {
            return crow::response(404, "Usuário não encontrado");
        }
        crow::json::wvalue response;
        response["id"] = id;
        response["name"] = it->second;
        return crow::response(respon                

Blogs

Book Recommendations