Learn/เริ่มต้นใช้ JavaScript

แปลงสกุลเงินด้วย JavaScript และ Node.js

ใช้ fetch ดึงอัตรา ใช้ผลลัพธ์ JSON คำนวณ และใช้ currency.js จัดการจำนวนเงินกับรูปแบบการแสดงผล

ERexchangerate.dev·อัปเดต 1 ตุลาคม 2026·อ่าน 6 นาที

บนเบราว์เซอร์เริ่มจากการเรียกแบบไม่ใช้ key ได้ ส่วน Node.js และเซิร์ฟเวอร์ควรเก็บ key ใน environment และเก็บ source กับเวลาที่สังเกตไว้

ประเด็นสำคัญ
fetch ใช้ได้ใน Node 18+, Deno, Bun และเบราว์เซอร์สมัยใหม่
อย่าใส่ account key ในโค้ดที่ส่งไปเบราว์เซอร์
currency.js ใช้คำนวณและจัดรูปแบบ ไม่ได้ดึงอัตรา
ตรวจ HTTP status และทำตาม Retry-After เมื่อได้ 429
แสดง source และ effective_at เมื่อผู้ใช้ต้องการรู้ความใหม่ของข้อมูล

เรียกจากเบราว์เซอร์

การเรียกแบบไม่ใช้ key เหมาะกับเครื่องคำนวณเล็ก ๆ หรือการทดสอบ จำกัด symbols และตั้ง timeout ด้วย

ย้าย key ไปเซิร์ฟเวอร์

แอปจริงควรเรียกจาก Node.js, Route Handler หรือบริการฝั่งเซิร์ฟเวอร์ key ต้องอยู่ในสภาพแวดล้อมเซิร์ฟเวอร์

คำนวณและจัดรูปแบบจำนวนเงิน

currency.js ช่วยเรื่องจำนวนเงิน ความละเอียด และรูปแบบ เรียก API เพื่อเอาอัตราก่อนแล้วจึงคูณจำนวนเงิน

อ่านความใหม่และข้อผิดพลาด

ตรวจ sources, effective_at, source และ market_session เมื่อได้ 429 ให้ถอยก่อนลองใหม่ และถือว่าอัตราเป็นข้อมูลอ้างอิง

คำถามที่พบบ่อย

javascript · no keycopy
const response = await fetch("https://api.exchangerate.dev/v1/latest/USD?symbols=EUR,GBP", {
  signal: AbortSignal.timeout(10_000),
});
if (!response.ok) throw new Error(`HTTP ${response.status}; Retry-After: ${response.headers.get("Retry-After")}`);
const data = await response.json();
console.log(data.rates.EUR);
console.log(data.sources.EUR, data.effective_at.EUR);
console.log(data.market_session);
javascript · authenticated call with error handlingcopy
// Node.js server only. Never put an account key in browser code.
const KEY = process.env.EXCHANGERATE_API_KEY;
if (!KEY) throw new Error("Set EXCHANGERATE_API_KEY on your server");

async function getLatest(base = "USD") {
  const response = await fetch(`https://api.exchangerate.dev/v1/latest/${encodeURIComponent(base)}`, {
    headers: { Authorization: `Bearer ${KEY}` },
    redirect: "error",
    signal: AbortSignal.timeout(10_000),
  });
  if (!response.ok) throw new Error(`HTTP ${response.status}; Retry-After: ${response.headers.get("Retry-After")}`);
  return response.json();
}

const data = await getLatest("USD");
console.log(data.rates.GBP, data.effective_at.GBP);
javascript · convert 100 USD to EURcopy
// Node.js server only.
const KEY = process.env.EXCHANGERATE_API_KEY;
if (!KEY) throw new Error("Set EXCHANGERATE_API_KEY on your server");
const response = await fetch("https://api.exchangerate.dev/v1/convert/USD/EUR/100", {
  headers: { Authorization: `Bearer ${KEY}` },
  redirect: "error",
  signal: AbortSignal.timeout(10_000),
});
if (!response.ok) throw new Error(`HTTP ${response.status}; Retry-After: ${response.headers.get("Retry-After")}`);
const data = await response.json();
console.log(data.rate, data.converted);
JavaScript · currency.jscopy
import currency from "currency.js";

const response = await fetch("https://api.exchangerate.dev/v1/latest/USD?symbols=EUR", {
  signal: AbortSignal.timeout(10_000),
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const data = await response.json();
const rate = data.rates.EUR;
if (!Number.isFinite(rate) || rate <= 0) throw new Error("Invalid rate");
const euros = currency("100.00", { precision: 2, symbol: "€" }).multiply(rate);
console.log(euros.format());
ER
exchangerate.dev
คู่มือการเชื่อมต่อสำหรับนักพัฒนา

อ่านต่อ

Tutorialรับอัตราแลกเปลี่ยนด้วย Pythonอ่าน Tutorialอัตราย้อนหลังและอนุกรมเวลาอ่าน
การเปรียบเทียบFixer vs exchangerate.devการเปรียบเทียบOpen Exchange Rates vs exchangerate.devการเปรียบเทียบCurrencylayer vs exchangerate.devคู่มือวิธีรับอัตราแลกเปลี่ยนด้วย Pythonคู่มืออัตราแลกเปลี่ยนใน Next.js และ TypeScriptคู่มือสร้างการแจ้งเตือนอัตรา USD/IDR ด้วย Pythonอัตราแลกเปลี่ยนสดEUR/USDอัตราแลกเปลี่ยนสดGBP/USDอัตราแลกเปลี่ยนสดUSD/JPY