1Kurulum
REST için axios, WebSocket için socket.io-client kurun:
npm install axios socket.io-client
API key almak için ücretsiz hesap oluşturun.
2REST API
ESM (import) — Tek Sembol
Node.js — REST API (ESM)
import axios from "axios"; const API_KEY = "hapi_xxxx"; const BASE_URL = "https://altinapi.com/api"; const client = axios.create({ baseURL: BASE_URL, headers: { "x-api-key": API_KEY }, timeout: 5000, }); // Has altın fiyatı const { data } = await client.get("/prices/ALTIN"); console.log(`Has Altın — Alış: ${data.bid} TL, Satış: ${data.ask} TL`); // Tüm fiyatlar const { data: prices } = await client.get("/prices"); prices.forEach(p => console.log(p.symbol, p.bid, p.ask));
Express.js — API Proxy Endpoint
Node.js — Express.js
import express from "express"; import axios from "axios"; const app = express(); const altinapiClient = axios.create({ baseURL: "https://altinapi.com/api", headers: { "x-api-key": process.env.ALTINAPI_KEY }, }); app.get("/gold-price", async (req, res) => { try { const { data } = await altinapiClient.get("/prices/ALTIN"); res.json(data); } catch (err) { res.status(500).json({ error: "Veri alınamadı" }); } }); app.listen(3000);
3WebSocket — Gerçek Zamanlı Fiyatlar
Node.js — WebSocket
import { io } from "socket.io-client"; // API key ile authenticated bağlantı const socket = io("https://altinapi.com", { auth: { apiKey: "hapi_xxxx" }, transports: ["websocket", "polling"], }); socket.on("connect", () => { console.log("Bağlandı!"); // Belirli sembollere abone ol socket.emit("subscribe", ["ALTIN", "USDTRY", "CEYREK_YENI"]); }); // İlk bağlantıda tüm fiyatlar gelir socket.on("prices:snapshot", ({ data }) => { const priceMap = {}; data.forEach(p => { priceMap[p.symbol] = p; }); console.log("Snapshot:", priceMap); }); // Fiyat değişimlerinde tetiklenir socket.on("prices:update", ({ data }) => { data.forEach(p => { console.log(`${p.symbol} güncellendi: ${p.bid} / ${p.ask}`); }); }); socket.on("disconnect", () => console.log("Bağlantı kesildi"));
Next.js API Route (App Router)
Next.js — app/api/gold/route.ts
import { NextResponse } from "next/server"; export async function GET() { const res = await fetch("https://altinapi.com/api/prices/ALTIN", { headers: { "x-api-key": process.env.ALTINAPI_KEY! }, next: { revalidate: 10 }, // 10 sn ISR cache }); if (!res.ok) return NextResponse.json({ error: "Hata" }, { status: 500 }); const data = await res.json(); return NextResponse.json(data); }