Tutorial/Next.js i TypeScript

Kursy walut w Next.js i TypeScript

Pobieraj kursy w komponencie serwerowym Next.js, nie ujawniaj klucza klientowi i zachowuj rzeczywisty czas obserwacji podczas buforowania.

MMexchangerate.dev·Jul 17, 2026·6 min czytania

Wywołuj exchangerate.dev z Server Component lub Route Handler. Next.js może odświeżać żądanie co 60 sekund, a source, market_session i data_updated_at opisują znaczenie kursu w pamięci podręcznej.

Key points
Przechowuj EXCHANGERATE_API_KEY wyłącznie po stronie serwera, bez prefiksu NEXT_PUBLIC_.
Użyj next: { revalidate: 60 }, aby ograniczyć powtarzające się wywołania.
Wyświetlaj data_updated_at, nie traktuj timestamp jako czasu obserwacji.
Kurs orientacyjny służy do prezentacji; kwotę rozliczenia ustala operator płatności.

Pobieraj dane po stronie serwera

Server Component działa poza przeglądarką i może odczytać prywatną zmienną. Przykład pobiera EUR i GBP względem USD, sprawdza status HTTP i zwraca typowany JSON.

typescript · app/page.tsxcopy
type LatestRates = {
  base: string;
  source: "live" | "ecb_daily" | "fred_daily";
  market_session: string;
  data_updated_at: string;
  rates: Record<string, number>;
};

async function getRates(): Promise<LatestRates> {
  const apiKey = process.env.EXCHANGERATE_API_KEY;
  if (!apiKey) throw new Error("EXCHANGERATE_API_KEY is missing");

  const response = await fetch(
    "https://api.exchangerate.dev/v1/latest/USD?symbols=EUR,GBP",
    {
      headers: { Authorization: `Bearer ${apiKey}` },
      next: { revalidate: 60 },
    },
  );

  if (!response.ok) {
    throw new Error(`FX request failed: ${response.status}`);
  }

  return response.json() as Promise<LatestRates>;
}

export default async function Page() {
  const fx = await getRates();

  return (
    <main>
      <p>1 USD = {fx.rates.EUR} EUR</p>
      <small>
        {fx.source} · {fx.market_session} · updated {fx.data_updated_at}
      </small>
    </main>
  );
}

Buforuj żądanie i zachowuj czas obserwacji

next: { revalidate: 60 } ogranicza czas bufora do 60 sekund. Nie zmienia jednak dziennego kursu referencyjnego w kurs intraday, dlatego zachowaj source, market_session i data_updated_at.

Nie ujawniaj klucza
Zmienne z NEXT_PUBLIC_ mogą trafić do pakietu przeglądarki. EXCHANGERATE_API_KEY odczytuj tylko na serwerze.

Oddziel walutę prezentacji od rozliczenia

Sklep może pokazać przybliżoną cenę lokalną. Ostateczne obciążenie musi pochodzić od operatora płatności, który uwzględnia spread, opłaty i moment rozliczenia.

  • Klucz trzymaj na serwerze.
  • Buforuj tylko poprawne odpowiedzi.
  • Pokazuj źródło i czas obserwacji.
  • Oryginalna cena i waluta pozostają podstawą rozliczenia.
MM
exchangerate.dev
Przewodniki integracyjne dla programistów pracujących z danymi FX.

Keep reading

TutorialPrzeliczanie walut w JavaScript i Node.jsRead ReferenceJak czytać source i market_sessionRead GuideKurs orientacyjny a wykonywalnyRead