FinansAPI

Dokümantasyon

Dağıtılan piyasa verisi, REST uçları ve canlı akış için Socket.io / WebSocket örnekleri.

API ile verilen veriler

Kaynak veri Datashop üzerinden alınır, Redis’e yazılır ve aynı model hem REST hem Socket ile sunulur. Yapı kabaca şöyledir:

  • Kategori anahtarları: Her üst seviye anahtar bir piyasa grubudur (ör. MADEN, DOVIZ, GRAM ALTIN…). Kaynakta category alanı yoksa DIGER altında toplanır.
  • Sembol satırları: Her kategorinin altında sembol adı → bid, ask, isteğe bağlı timestamp (sayısal zaman damgası).
  • REST yanıtı: fiyatlar nesnesi (yukarıdaki yapı) ve guncellendi (son güncelleme zamanı, ms).
  • Canlı akış: Socket.io olayı prices — gövde, güncel fiyatlar nesnesi ile aynı şekildedir.
  • Kimlik: Geçerli bir API anahtarı gerekir. REST için başlık X-API-Key; Socket.io el sıkışmasında auth.apiKey.

REST API

GET /v1/fiyatlar — canlı özet JSON. Tarayıcıdan aynı origin üzerinden /api/backend/v1/fiyatlar (Next.js proxy) veya doğrudan backend kök adresi kullanılabilir.

cURL

curl -sS \
  -H "X-API-Key: YOUR_API_KEY" \
  "https://API_KOKUNUZ/v1/fiyatlar"

fetch (tarayıcı, Vercel proxy ile aynı site)

const r = await fetch("/api/backend/v1/fiyatlar", {
  headers: { "X-API-Key": process.env.NEXT_PUBLIC_MARKET_API_KEY ?? "" },
});
const data = await r.json();
// data.fiyatlar, data.guncellendi

Socket.io (önerilen)

Sunucu Socket.io kullanır. İstemci olarak socket.io-clientpaketi kullanın; bağlantı kök URL'ye yapılır (path /socket.io/ otomatik).

import { io } from "socket.io-client";

const socket = io("https://API_KOKUNUZ", {
  auth: { apiKey: "YOUR_API_KEY" },
  transports: ["websocket", "polling"],
});

socket.on("connect", () => console.log("socket.io bağlandı"));
socket.on("prices", (fiyatlar) => {
  console.log("Güncel paket:", fiyatlar);
});
socket.on("connect_error", (err) => console.error(err));

WebSocket (yalnızca WebSocket transport)

Aynı Socket.io sunucusuna bağlanırken sadece WebSocket kullanmak istiyorsanız transports: ["websocket"] verin (ilk istek yine Engine.io el sıkışmasıdır; ham new WebSocket(url) Socket.io ile doğrudan uyumlu değildir).

import { io } from "socket.io-client";

const socket = io("https://API_KOKUNUZ", {
  auth: { apiKey: "YOUR_API_KEY" },
  transports: ["websocket"],
  upgrade: false,
});

socket.on("prices", (fiyatlar) => {
  /* aynı prices olayı */
});

Not: Tarayıcı "WebSocket" sekmesinde gördüğünüz istekler Socket.io/Engine.io çerçevesindedir; protokol düz metin WebSocket ile aynı değildir.