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…). Kaynaktacategoryalanı yoksaDIGERaltı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ı:
fiyatlarnesnesi (yukarıdaki yapı) veguncellendi(son güncelleme zamanı, ms). - Canlı akış: Socket.io olayı
prices— gövde, güncelfiyatlarnesnesi 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ındaauth.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.guncellendiSocket.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.