Como escrever uma API REST em C++ em 30 minutos: 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

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.hpp


Instalação das dependências (Windows com MinGW)



Para Windows, use vcpkg:



vcpkg install crowvcpkg install nlohmann-json


2. 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_server


Abra 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