Crow — microframework web para C++
1. ¿Qué es Crow y para qué sirve?
Crow es un microframework web ligero, rápido y moderno para el lenguaje C++, inspirado en el popular framework Python Flask. Está diseñado para crear APIs REST, servicios web y aplicaciones web simples con una cantidad mínima de código y sin necesidad de configuraciones complejas. Crow está escrito en C++17/20 y utiliza las bibliotecas asio (o boost.asio) para el procesamiento asíncrono de solicitudes, lo que lo convierte en una de las soluciones más eficientes en su nicho.
¿Por qué usar Crow? Si necesitas implementar rápidamente un servidor HTTP en C++ para procesar solicitudes JSON, servir archivos estáticos o crear un microservicio, Crow es la opción ideal. A diferencia de frameworks más pesados como drogon o pistache, Crow tiene un tamaño mínimo, una API sencilla y no requiere generación de código ni macros complejas. Es perfecto para sistemas embebidos, dispositivos IoT, servidores de juegos y cualquier escenario donde la velocidad y el bajo consumo de memoria sean críticos.
Crow admite enrutamiento (incluyendo parámetros dinámicos en URL), middleware, trabajo con JSON (a través de una biblioteca integrada o nlohmann/json), WebSocket, CORS, multipart/form-data y mucho más. El framework está en desarrollo activo, cuenta con buena documentación y una comunidad estable.
2. Instalación
Crow es una biblioteca header-only (en la mayoría de los casos), por lo que la instalación se reduce a clonar el repositorio e incluir los archivos de cabecera. Sin embargo, para compilar ejemplos y proyectos se recomienda usar CMake.
Método 1: Clonar (recomendado para desarrollo)
git clone https://github.com/CrowCpp/Crow.git
cd Crow
mkdir build
cd build
cmake ..
make
sudo make install
Método 2: Usar vcpkg
vcpkg install crow
Método 3: Integración con 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(tu_proyecto PRIVATE Crow::Crow)
Importante: Crow requiere un compilador compatible con C++17 (gcc 8+, clang 7+, MSVC 2019+). También es necesaria la biblioteca asio (o boost.asio). Si usas vcpkg, las dependencias se instalarán automáticamente.
3. Inicio rápido — ejemplo mínimo funcional
Crea un archivo main.cpp con el siguiente contenido:
#include "crow.h"
int main() {
crow::SimpleApp app;
// Definimos una ruta para la URL raíz
CROW_ROUTE(app, "/")([](){
return "¡Hola, Crow!";
});
// Iniciamos el servidor en el puerto 8080
app.port(8080).multithreaded().run();
}
Compila y ejecuta:
g++ -std=c++17 -pthread main.cpp -o crow_server
./crow_server
Abre tu navegador y ve a http://localhost:8080. Verás el mensaje de bienvenida.
4. Métodos/funciones/clases principales
4.1. crow::SimpleApp
Firma: class SimpleApp : public crow::App<Middleware...>
Qué hace: Es la clase principal de la aplicación. Gestiona las rutas, el middleware y el ciclo de vida del servidor. SimpleApp es una versión preconfigurada
También en la biblioteca
Anvil para Kotlin: guía completa con ejemplos prácticos
Trabajo con Excel en PHP: bibliotecas PhpSpreadsheet, PhpOffice y generación de XLSX
Métricas de Prometheus en C# (.NET) — biblioteca prometheus-net
Biblioteca estándar de JavaScript (Node.js): revisión completa
Trabajo con CSV en JavaScript (Node.js): bibliotecas y herramientas