Cómo escribir una API REST en C++ en 30 minutos: guía paso a paso

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: ¿Por qué escribir una API REST en C++?



C++ se asocia tradicionalmente con la programación de sistemas, juegos y aplicaciones de alta carga. Sin embargo, el C++ moderno (a partir de los estándares C++11/17/20) proporciona todas las herramientas necesarias para el desarrollo rápido de servicios web. Escribir una API REST en C++ puede estar justificado cuando se requiere el máximo rendimiento, bajo consumo de memoria o integración con código C++ existente (por ejemplo, bibliotecas de visión por computadora o cálculos numéricos).



En esta guía, crearemos una API REST completa en C++ en 30 minutos. Para ello, utilizaremos la biblioteca ligera y elegante Crow. No requiere configuración compleja, soporta enrutamiento, JSON (a través de json.hpp) y middleware. Al final del artículo, tendrá un servidor funcional con tres endpoints.



Paso 1: Configuración del entorno e instalación de Crow



Para trabajar, necesitaremos un compilador con soporte para C++17 (g++ 7+, clang 5+ o MSVC 2017+) y el sistema de compilación CMake. Crow es una biblioteca "header-only", lo que simplifica la instalación: basta con descargar un único archivo de encabezado.



Instalación

  1. Descargue la última versión de Crow desde GitHub (o use git clone).
  2. Copie la carpeta include en su proyecto.
  3. Instale nlohmann/json (también header-only) para trabajar con JSON.


Estructura del proyecto

my_rest_api/├── CMakeLists.txt├── main.cpp└── include/    ├── crow.h    └── json.hpp


CMakeLists.txt

cmake_minimum_required(VERSION 3.10)project(my_rest_api)

set(CMAKE_CXX_STANDARD 17)

include_directories(include)

add_executable(my_rest_api main.cpp)target_link_libraries(my_rest_api pthread)


Compilación: mkdir build && cd build && cmake .. && make



Paso 2: Creación del servidor base y rutas



Crow utiliza un DSL simple para definir rutas. Creemos un servidor que escuche en el puerto 8080 y maneje solicitudes GET y POST.



Código base del servidor

#include "crow.h"#include <string>

int main() { crow::SimpleApp app;

// Ruta GET simple CROW_ROUTE(app, "/")([](){ return "¡Bienvenido a la API REST en C++!"; });

// GET con parámetro de ruta CROW_ROUTE(app, "/user/<int>")([](int user_id){ return crow::response("ID de usuario: " + std::to_string(user_id)); });

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


Este código crea dos endpoints. crow::SimpleApp es la clase principal de la aplicación. El método multithreaded() habilita el procesamiento de solicitudes en un pool de hilos. Inicie el servidor y verifique en el navegador http://localhost:8080/.



Tipos de parámetros en rutas

Crow soporta los siguientes tipos de parámetros en la ruta:

  • <int> — número entero
  • <string> — cadena de texto
  • <path> — resto de la ruta (por ejemplo, /files/<path>)
  • <float> — número de punto flotante


Paso 3: Trabajo con JSON y solicitudes POST



Una API REST real debe poder recibir y devolver JSON. Conectaremos nlohmann/json e implementaremos operaciones similares a CRUD.



Ejemplo: "Base de datos" simple en memoria

#include "crow.h"#include "json.hpp"#include <unordered_map>#include <memory>

using json = nlohmann::json;

struct Task { int id; std::string title; bool completed;};

std::unordered_map<int, std::shared_ptr<Task>> tasks;int next_id = 1;

int main() { crow::SimpleApp app;

// GET /tasks — obtener todas las tareas CROW_RO

Blogs

Book Recommendations