GaiaEx AcademyGaiaEx Academy
Diseño de API RESTful e integración con WebSocket
DesarrolladorProgramación10 min read

Diseño de API RESTful e integración con WebSocket

Construir y consumir datos de mercado y APIs de trading

Compartir Publicaciones

REST: recursos y verbos

REST mapea CRUD a HTTP: GET para lecturas, POST para crear, PATCH para actualizaciones parciales, DELETE para eliminar. Usa los códigos de estado con honestidad — un 200 con un JSON de error rompe a los clientes.

Versiona en la ruta (/v1/), pagina las listas largas (feeds por cursor para flujos de solo-anexado) y documenta los cambios que rompen compatibilidad con una ventana de desuso (deprecation).

REST vs WEBSOCKET Comandos vs streaming — la mayoría de exchanges usan ambos REST (HTTPS) Solicitud → respuesta → inactivo Colocar/cancelar, balances, snapshots WebSocket Canal dúplex persistente Operaciones, deltas del libro, tickers
REST para cambios de estado; WebSocket para datos de mercado continuos — no consultes el libro en bucle a los límites de tasa de HTTP.

Claves y HMAC

Las claves de API identifican; los secretos prueban. Para los endpoints de trading, aplica HMAC sobre una cadena canónica (método + ruta + cuerpo + marca de tiempo) para que el secreto nunca viaje por la red. Rechaza marcas de tiempo obsoletas para bloquear ataques de repetición — ±30 s es una ventana habitual.

OAuth se adapta a las apps de terceros; los bots de exchange puros suelen quedarse con clave + HMAC. Límites de tasa: espera respuestas 429 y respeta el encabezado Retry-After.

Actualizaciones de WebSocket (upgrades)

La sesión empieza como un GET HTTP con Upgrade: websocket; el servidor devuelve 101 Switching Protocols. A partir de ahí, los frames son baratos comparados con los handshakes TLS repetidos de un polling por HTTP.

Los mensajes de suscripción suelen ser JSON: método, canales y, a veces, firmas de autenticación para las ejecuciones privadas.

Libros, operaciones y recuperación

El stream de operaciones son datos tick a tick; los libros son snapshot + delta con números de secuencia. Si te pierdes secuencias, resincroniza desde un snapshot de REST y luego aplica los deltas con secuencia > secuencia del snapshot.

Heartbeat: envía un ping o espera pings del servidor; reconecta con backoff con jitter para evitar estampidas (thundering herd).

RESINCRONIZACIÓN DEL LIBRO DE ÓRDENES Los huecos de secuencia significan que tu libro local está mal hasta que se corrija Caída de WS Snapshot REST Suscribir deltas aplicar solo si seq > snapshot_seq seq: 10421 hueco 10422–10429 snapshot @10429 delta 10430+ Operar sobre un libro obsoleto es peor que pausar las cotizaciones durante un segundo
Tras una desconexión: snapshot, luego deltas — nunca adivines los niveles que faltan.

GraphQL y OpenAPI

GraphQL recorta el sobre-fetching en los dashboards; muchos exchanges siguen exponiendo REST para las rutas críticas de trading. Las especificaciones OpenAPI (Swagger) ayudan a la generación de código y al QA — mantén los ejemplos copiables y pegables.

Un patrón mínimo de consumidor

Ejecuta el bucle de WebSocket en una tarea, empuja los últimos precios a un mapa seguro para hilos, expón HTTP para comprobaciones de salud (health checks). Registra los recuentos de reconexión; alerta cuando se disparen.

Pon las pruebas de firma y de desfase de reloj (clock skew) en CI: un HMAC roto en producción es indistinguible de «el mercado se ha movido» hasta que auditas los registros.