Saltearse al contenido

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

rest-api/
├── CMakeLists.txt
├── src/
│ ├── main.cpp
│ └── routes/
│ └── users.cpp
└── include/
└── routes/
└── users.hpp

cmake_minimum_required(VERSION 3.20)
project(rest_api)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
include(FetchContent)
FetchContent_Declare(
zuno
GIT_REPOSITORY https://github.com/ZunoFramework/zuno.git
GIT_TAG main
)
FetchContent_MakeAvailable(zuno)
include_directories(include)
add_executable(rest-api
src/main.cpp
src/routes/users.cpp
)
target_link_libraries(rest-api PRIVATE zuno)

#include <zuno/zuno.hpp>
#include "routes/users.hpp"
int main() {
zuno::App app;
registerUserRoutes(app);
app.listen(3000);
}

#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 }
});
});
}

#pragma once
#include <zuno/zuno.hpp>
void registerUserRoutes(zuno::App& app);

Terminal window
cmake -B build
cmake --build build
./build/rest-api

Luego prueba tu API:

  • GET /users → devuelve una lista de usuarios
  • GET /users/42 → devuelve el usuario con ID 42


Zuno hace que las APIs web modulares en C++ se sientan naturales sin sacrificar rendimiento ni claridad.