Cliente de API Externa
🌐 Cliente de API Externa
Sección titulada «🌐 Cliente de API Externa»En este ejemplo, construirás un microservicio con Zuno que obtiene datos desde una API externa (por ejemplo, JSONPlaceholder) y los devuelve al cliente. Esto es útil para:
- Encapsular APIs de terceros
- Agregar datos desde múltiples fuentes
- Construir microservicios que dependen de sistemas externos
📦 Requisitos
Sección titulada «📦 Requisitos»Este ejemplo utiliza una biblioteca HTTP ligera para hacer peticiones salientes. Puedes usar cualquier cliente HTTP en C++ (como cpr
, Boost.Beast o un wrapper sobre libcurl). Para simplificar, usaremos cpr vía FetchContent
.
🧱 Estructura del Proyecto
Sección titulada «🧱 Estructura del Proyecto»external-api-client/├── CMakeLists.txt└── main.cpp
📄 CMakeLists.txt
Sección titulada «📄 CMakeLists.txt»cmake_minimum_required(VERSION 3.20)project(external_api_client)
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_Declare(cprGIT_REPOSITORY https://github.com/libcpr/cpr.gitGIT_TAG 1.10.4)
FetchContent_MakeAvailable(zuno cpr)
add_executable(external-api main.cpp)target_link_libraries(external-api PRIVATE zuno cpr::cpr)
📄 main.cpp
Sección titulada «📄 main.cpp»#include <zuno/zuno.hpp>#include <cpr/cpr.h>
int main() {zuno::App app;
app.get("/posts/:id", [](auto& req, auto& res) { auto id = req.params["id"]; auto response = cpr::Get(cpr::Url{std::format("https://jsonplaceholder.typicode.com/posts/{}", id)});
if (response.status_code == 200) { res.status(200).send(response.text); } else { res.status(502).send("Error al obtener datos externos"); }});
app.listen(3000);}
🧪 Probar el Microservicio
Sección titulada «🧪 Probar el Microservicio»curl http://localhost:3000/posts/1
Deberías recibir una respuesta JSON desde la API externa, reenviada por tu servidor Zuno.
🧭 Próximos Pasos
Sección titulada «🧭 Próximos Pasos»- Agrega caché para reducir la carga externa
- Usa manejo de errores para mejorar la resiliencia
- Protege el endpoint con autenticación
Zuno facilita la creación de microservicios que se comunican con el mundo exterior—de forma segura y eficiente.