API REST Modular
🧩 API REST Modular
Sección titulada «🧩 API REST Modular»En este ejemplo, construiremos una pequeña API REST usando Zuno con una estructura modular. Aprenderás a:
- Organizar rutas en archivos separados
- Devolver respuestas en formato JSON
- Usar
FetchContent
para obtener Zuno automáticamente
🧱 Estructura del Proyecto
Sección titulada «🧱 Estructura del Proyecto»rest-api/├── CMakeLists.txt├── src/│ ├── main.cpp│ └── routes/│ └── users.cpp└── include/ └── routes/ └── users.hpp
📄 CMakeLists.txt
Sección titulada «📄 CMakeLists.txt»cmake_minimum_required(VERSION 3.20)project(rest_api)
set(CMAKE_CXX_STANDARD 20)set(CMAKE_CXX_STANDARD_REQUIRED ON)
include(FetchContent)
FetchContent_Declare(zunoGIT_REPOSITORY https://github.com/ZunoFramework/zuno.gitGIT_TAG main)
FetchContent_MakeAvailable(zuno)
include_directories(include)
add_executable(rest-apisrc/main.cppsrc/routes/users.cpp)
target_link_libraries(rest-api PRIVATE zuno)
📄 src/main.cpp
Sección titulada «📄 src/main.cpp»#include <zuno/zuno.hpp>#include "routes/users.hpp"
int main() {zuno::App app;
registerUserRoutes(app);
app.listen(3000);}
📄 src/routes/users.cpp
Sección titulada «📄 src/routes/users.cpp»#include <zuno/zuno.hpp>#include "routes/users.hpp"
void registerUserRoutes(zuno::App& app) {app.get("/users", [](Request& req, Response& res) { res.json({ { "id", 1 }, { "name", "Alice" } });});
app.get("/users/:id", [](auto& req, auto& res) { std::string id = req.params["id"]; res.json({ { "id", id }, { "name", "Usuario " + id } });});}
📄 include/routes/users.hpp
Sección titulada «📄 include/routes/users.hpp»#pragma once#include <zuno/zuno.hpp>
void registerUserRoutes(zuno::App& app);
🚀 Ejecutar la API
Sección titulada «🚀 Ejecutar la API»cmake -B buildcmake --build build./build/rest-api
Luego prueba tu API:
GET /users
→ devuelve una lista de usuariosGET /users/42
→ devuelve el usuario con ID 42
🧭 Próximos Pasos
Sección titulada «🧭 Próximos Pasos»- Agrega middleware como logging o autenticación
- Usa limitación de tasa para proteger endpoints
- Habilita TLS para asegurar tu API
Zuno hace que las APIs web modulares en C++ se sientan naturales sin sacrificar rendimiento ni claridad.