GaiaEx AcademyGaiaEx Academy
Design de API RESTful e Integração com WebSocket
DesenvolvedorProgramação10 min read

Design de API RESTful e Integração com WebSocket

Construindo e consumindo APIs de dados de mercado e negociação

Compartilhar Posts

REST: Recursos e Verbos

REST mapeia CRUD para HTTP: GET para leituras, POST para criar, PATCH para atualizações parciais, DELETE para remover. Use os códigos de status com honestidade — 200 com um JSON de erro quebra os clientes.

Versione no caminho (/v1/), pagine listas grandes (feeds por cursor para streams somente-anexação), e documente mudanças que quebram compatibilidade com uma janela de descontinuação.

REST vs WEBSOCKET Commands vs streaming—most exchanges use both REST (HTTPS) Request → response → idle Place/cancel, balances, snapshots WebSocket Persistent duplex channel Trades, book deltas, tickers
REST para mudanças de estado; WebSocket para dados de mercado contínuos — não faça polling do livro de ofertas nos limites de taxa do HTTP.

Chaves e HMAC

Chaves de API identificam; segredos comprovam. Para endpoints de negociação, aplique HMAC a uma string canônica (método + caminho + corpo + timestamp) para que o segredo nunca viaje na rede. Rejeite timestamps desatualizados para bloquear ataques de repetição — ±30s é uma janela comum.

O OAuth se encaixa em aplicativos de terceiros; bots que operam diretamente na corretora geralmente ficam com chave+HMAC. Limites de taxa: espere receber 429 e respeite o Retry-After.

Upgrades de WebSocket

A sessão começa como um HTTP GET com Upgrade: websocket; o servidor retorna 101 Switching Protocols. Depois disso, os frames são baratos em comparação a handshakes TLS repetidos no polling via HTTP.

Mensagens de inscrição geralmente são JSON: método, canais e, às vezes, assinaturas de autenticação para execuções privadas.

Livros, Negociações, Recuperação

O stream de negociações é dado tick a tick; os livros são snapshot + delta com números de sequência. Se você perder sequências, resincronize a partir de um snapshot REST e depois aplique os deltas com sequência > a do snapshot.

Heartbeat: envie ping ou espere pings do servidor; reconecte com backoff com jitter (variação aleatória) para evitar avalanches de reconexão.

ORDER BOOK RESYNC Sequence gaps mean your local book is wrong until fixed WS drop REST snapshot Subscribe deltas apply only if seq > snapshot_seq seq: 10421 gap 10422–10429 snapshot @10429 delta 10430+ Trading on a stale book is worse than pausing quotes for one second
Depois de uma desconexão: snapshot, depois deltas — nunca chute os níveis que faltam.

GraphQL e OpenAPI

O GraphQL reduz o excesso de dados buscados (over-fetching) em dashboards; muitas corretoras ainda expõem REST para os caminhos críticos de negociação. Especificações OpenAPI (Swagger) ajudam na geração de código e no QA — mantenha os exemplos prontos para copiar e colar.

Um Padrão Mínimo de Consumidor

Rode o loop do WebSocket em uma tarefa, empurre os últimos preços para um mapa thread-safe, exponha HTTP para verificações de saúde. Registre em log as contagens de reconexão; alerte quando elas dispararem.

Coloque testes de assinatura e de dessincronização de relógio na integração contínua (CI): um HMAC quebrado em produção é indistinguível de “o mercado se moveu” até você auditar os logs.