***Descripción del proyecto
***Diagrama de arquitectura
***Instrucciones de uso
***Ejemplos de solicitudes y respuestas esperadas
- Hola mundo
nombre: hola
def hola_mundo():
return 'Hola mundo.'- Sumar dos números
nombre: sumar
def sumar(x: int, y: int):
total = x + y
return {"x": x, "y": y, "suma": total}http://localhost/ms/sumar/?x=5&y=13
#Cada argumento debe ir en el link utilizando la estructura mostrada en el enlace de ejemplo de arriba
-
Autenticación con Roble
nombre: consultar_roble
def consultar_roble(db_name: str, access_token: str, table_name: str):
"""
Consulta una tabla en ROBLE usando un token ya obtenido.
Parámetros:
- db_name: identificador del proyecto (dbName), p. ej. 'dashboard_1b100b9a80'
- access_token: token JWT válido (cadena completa después de 'Bearer ')
- table_name: nombre de la tabla a leer, p. ej. 'usuarios'
Retorna:
- Lista (rows) con el contenido de la tabla, o un dict con {"error", "status", "body"} si falla.
"""
import json
from urllib.request import Request, urlopen
from urllib.error import HTTPError, URLError
from urllib.parse import urlencode
# Endpoint /read con query param tableName
base = f"https://roble-api.openlab.uninorte.edu.co/database/{db_name}/read"
qs = urlencode({"tableName": table_name})
req = Request(
f"{base}?{qs}",
headers={"Authorization": f"Bearer {access_token}"},
method="GET"
)
try:
with urlopen(req, timeout=20) as resp:
body = resp.read().decode("utf-8") or "[]"
return json.loads(body) # <- retorna DIRECTO el contenido de la tabla
except HTTPError as e:
try:
err_body = e.read().decode("utf-8")
except Exception:
err_body = str(e)
return {"error": "HTTPError", "status": e.code, "body": err_body}
except URLError as e:
return {"error": "URLError", "status": 0, "body": str(e)}#Este código, así como la función de sumar 2 números, recibe parámetros por lo que estos deben ir en el enlace que entrega el localhost, separados por un &
sería: https://localhost/ms/consultar_roble?db_name=(valor)&access_token=(valor)&table_name=(valor)
ejemplo:
(Eliminar paréntesis o llaves al meter los parámetros, el {token} solo fue para no agregar un token real