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);
}

Diğer Diller