Crow — Micro Framework Web para C++
1. O que é e para que serve
Crow é um micro framework web leve, rápido e moderno para a linguagem C++, inspirado no popular framework Python Flask. Ele foi projetado para criar APIs REST, serviços web e aplicações web simples com o mínimo de código e sem a necessidade de configurações complexas. Crow é escrito em C++17/20 e utiliza as bibliotecas asio (ou boost.asio) para processamento assíncrono de requisições, tornando-o uma das soluções mais performáticas em seu nicho.
Por que usar Crow? Se você precisa implantar rapidamente um servidor HTTP em C++ para processar requisições JSON, servir arquivos estáticos ou criar um microsserviço, Crow é a escolha ideal. Ao contrário de frameworks mais pesados como drogon ou pistache, Crow tem tamanho mínimo, API simples e não requer geração de código ou macros complexas. Ele é perfeito para sistemas embarcados, dispositivos IoT, servidores de jogos e qualquer cenário onde velocidade e baixo consumo de memória são cruciais.
Crow suporta roteamento (incluindo parâmetros dinâmicos na URL), middleware, trabalho com JSON (através de biblioteca embutida ou nlohmann/json), WebSocket, CORS, multipart/form-data e muito mais. O framework está em desenvolvimento ativo, possui boa documentação e uma comunidade estável.
2. Instalação
Crow é uma biblioteca header-only (na maioria dos casos), então a instalação se resume a clonar o repositório e incluir os arquivos de cabeçalho. No entanto, para compilar exemplos e projetos, recomenda-se o uso do CMake.
Método 1: Clonagem (recomendado para desenvolvimento)
git clone https://github.com/CrowCpp/Crow.git
cd Crow
mkdir build
cd build
cmake ..
make
sudo make install
Método 2: Usando vcpkg
vcpkg install crow
Método 3: Integração via CMake FetchContent
include(FetchContent)
FetchContent_Declare(
crow
GIT_REPOSITORY https://github.com/CrowCpp/Crow.git
GIT_TAG v1.0.0
)
FetchContent_MakeAvailable(crow)
target_link_libraries(seu_projeto PRIVATE Crow::Crow)
Importante: Crow requer um compilador com suporte a C++17 (gcc 8+, clang 7+, MSVC 2019+). Também é necessária a biblioteca asio (ou boost.asio). Se você usar vcpkg, as dependências serão baixadas automaticamente.
3. Início rápido — exemplo funcional mínimo
Crie um arquivo main.cpp com o seguinte conteúdo:
#include "crow.h"
int main() {
crow::SimpleApp app;
// Define a rota para a URL raiz
CROW_ROUTE(app, "/")([](){
return "Olá, Crow!";
});
// Inicia o servidor na porta 8080
app.port(8080).multithreaded().run();
}
Compile e execute:
g++ -std=c++17 -pthread main.cpp -o crow_server
./crow_server
Abra o navegador e acesse http://localhost:8080. Você verá a mensagem de boas-vindas.
4. Principais métodos/funções/classes
4.1. crow::SimpleApp
Assinatura: class SimpleApp : public crow::App<Middleware...>
O que faz: Classe principal da aplicação. Gerencia rotas, middleware e o ciclo de vida do servidor. SimpleApp é uma versão pré-configurada
Também na biblioteca
Geolocalização e Mapas em TypeScript: Bibliotecas, API e Exemplos de Código
GraphQL em PHP: biblioteca webonyx/graphql-php para criação de APIs
Zod — poderosa biblioteca para validação de dados em TypeScript
clinic.js — Monitoramento de aplicações TypeScript