Case Study/Üretim vaka analizi

goldprice.dev altını yerel para birimlerinde nasıl fiyatlandırıyor

goldprice.dev, USD cinsinden metal fiyatlarını exchangerate.dev'in döviz kurlarıyla birleştirerek tazelik sınırlarını gizlemeden yerel para birimi cinsinden altın fiyatları sunuyor.

MMexchangerate.dev·Jul 16, 2026·7 dakikalık okuma

goldprice.dev ve exchangerate.dev, aynı şirket tarafından işletilen kardeş ürünlerdir. Üretimde, goldprice.dev metal fiyatı sözleşmesinin sahibidir; exchangerate.dev ise desteklenen dalgalı para birimleri için döviz bacağını sağlar. Bu sınır önemlidir: yerel bir altın fiyatı iki piyasa gözlemi içerir ve bir bacağın taze olması diğerini taze kılmaz.

Key points
goldprice.dev, metal fiyatının ve genel dönüştürme yanıtının sahibidir; exchangerate.dev döviz bacağını sağlar.
Genel goldprice.dev /v1/convert uç noktası, tek çağrılık üretim yolunu sağlar.
Geliştiriciler, denetlenebilir bir veri soy kütüğüne ihtiyaç duyduklarında her iki API'yi de ayrı ayrı çağırabilir.
Altın için computed_at değerini, döviz için data_updated_at, timestamp, source ve market_session değerlerini birbirinden bağımsız olarak saklayın.
Dönüştürülen fiyatlar gösterge niteliğinde piyasa değerleridir; işlem yapılabilir bayi veya takas kotasyonları değildir.

Üretim sınırı

goldprice.dev bir USD metal gözlemiyle başlar. exchangerate.dev, desteklenen dalgalı para birimleri için karşılık gelen USD-yerel döviz gözlemini sağlar. Ardından goldprice.dev; birimler, desteklenen semboller, doğrulama ve nihai yanıt dahil olmak üzere metale özgü dönüştürme sözleşmesinin sahibi olur.

Bu, açıkça belirtilmiş bir kardeş ürün entegrasyonudur; bağımsız bir müşteri onayı değildir. Bir vaka analizi olarak değeri operasyoneldir: döviz API'si gerçek bir üretim veri bacağı sağlar ve tüketen ürün kendi alanının sorumluluğunu üstlenmeye devam eder.

Dönüştürme formülü

Altın genellikle troy ons başına USD olarak kote edilir. Yerel bir gösterim genellikle gram başına bir para birimi tutarına ihtiyaç duyar. Önce ağırlığı dönüştürün, ardından USD döviz kurunu uygulayın:

formula · USD/oz to local currency/gramcopy
const GRAMS_PER_TROY_OZ = 31.1035;

function localGoldPerGram(usdPerTroyOz, usdToLocalRate) {
  return (usdPerTroyOz / GRAMS_PER_TROY_OZ) * usdToLocalRate;
}

Ağırlık sabiti değişmez. İki piyasa girdisi ise değişkendir: hem altın kotasyonunun hem de döviz kurunun kendi gözlem zamanı ve tazelik kuralları vardır.

Tek çağrılık üretim yolu

Çağıranlar için üretim sınırı goldprice.dev `/v1/convert` uç noktasıdır. Metal ve döviz bacaklarını, metalden haberdar tek bir uç nokta arkasında birleştirir ve bir API anahtarı gerektirmez. Bu örnek, bir gram altının Endonezya rupisi cinsinden değerini talep eder:

javascript · one-request conversioncopy
const params = new URLSearchParams({
  from: "XAU",
  to: "IDR",
  amount: "1",
  unit: "gram",
});

const response = await fetch(
  `https://api.goldprice.dev/v1/convert?${params}`,
);

if (!response.ok) {
  throw new Error(`goldprice.dev returned ${response.status}`);
}

const conversion = await response.json();
console.log(conversion.result, conversion.to, conversion.timestamp);

Bu yol, çağıran sözleşmesini küçük tutar: bir istek, bir miktar, bir metal birimi ve bir hedef para birimi. Tek bir timestamp değeri, her iki piyasa bacağını da bağımsız olarak kanıtlamaz; bu nedenle döviz tazeliğini denetlemesi gereken tüketiciler aşağıdaki iki bacaklı yolu kullanmalıdır.

Denetlenebilir iki bacaklı entegrasyon

Her kaynağın zaman damgasını korumanız, girdileri birbirinden bağımsız önbelleğe almanız veya hangi bacağın bayat olduğunu açıklamanız gerektiğinde her iki API'yi de çağırın. goldprice.dev spot troy ons başına USD altını sağlar; exchangerate.dev ise USD-yerel kurunu sağlar.

javascript · explicit gold and FX legscopy
const GRAMS_PER_TROY_OZ = 31.1035;

async function getGoldInCurrencies(currencies) {
  const symbols = currencies.join(",");
  const [spotResponse, fxResponse] = await Promise.all([
    fetch("https://api.goldprice.dev/v1/spot/XAU-USD-SPOT"),
    fetch(`https://api.exchangerate.dev/v1/latest/USD?symbols=${symbols}`),
  ]);

  if (!spotResponse.ok || !fxResponse.ok) {
    throw new Error("A market-data request failed");
  }

  const spot = await spotResponse.json();
  const fx = await fxResponse.json();
  const usdPerGram = Number(spot.price) / GRAMS_PER_TROY_OZ;

  return {
    goldComputedAt: spot.computed_at,
    fxDataUpdatedAt: fx.data_updated_at,
    fxResponseTimestamp: fx.timestamp,
    fxSource: fx.source,
    fxMarketSession: fx.market_session,
    prices: Object.fromEntries(
      currencies.map((currency) => [
        currency,
        usdPerGram * Number(fx.rates[currency]),
      ]),
    ),
  };
}

const result = await getGoldInCurrencies(["EUR", "IDR", "JPY"]);
Bir yanıt zaman damgası, bir piyasa zaman damgası değildir
Altın gözlemi için spot.computed_at değerini, katkıda bulunan en eski döviz gözlemi için fx.data_updated_at değerini koruyun. Döviz zaman damgası, yanıtın oluşturulduğu andır; source ve market_session ise veri sınıfı ve seans bağlamı ekler. Bu alanları Date.now() ile değiştirmeyin.

Hizmetler neden ayrı kalıyor

Bu entegrasyon, exchangerate.dev'i altın fiyatlandırmasının tamamını yapan bir motora dönüştürmez. exchangerate.dev, döviz katmanı olarak kalır. Bu sınırı açık tutmak; döviz tazeliğinin, metal tazeliğinin ve ürüne özgü dönüştürme kurallarının tek, belirsiz bir değerde birleşmesini önler.

  • goldprice.dev, çağıranların ortak yolu kendilerinin bir araya getirmesini gerektirmeden küçük, metale özgü bir arayüz sunabilir.
  • exchangerate.dev, metal alanının dışında da faydalı olan genel bir döviz sözleşmesini korur.
  • Denetime duyarlı tüketiciler, her iki gözlemi de birbirinden bağımsız olarak alıp saklayabilir.
  • Her hizmet, hataları ve tazeliği kendi piyasa verisinin terminolojisini kullanarak bildirebilir.

Bayat veya eksik bacakları açıkça ele alın

Girdilerden biri eksikse, sıfırsa, sayısal değilse veya ürününüzün kabul ettiği tazelik penceresinin dışındaysa, birleşik bir fiyat kullanılmaya devam etmemelidir. Son geçerli değeri yalnızca arayüz onu orijinal gözlem zamanlarıyla etiketliyorsa saklayın.

  • Hesaplama yapmadan önce her iki HTTP yanıtını da kontrol edin.
  • Sonlu olmayan veya pozitif olmayan fiyatları ve kurları reddedin.
  • Altın ve döviz için ayrı tazelik eşikleri belirleyin.
  • market_session: weekend değerini bağlam olarak ele alın; taşınan bir kurun güncel olduğunun kanıtı olarak değil.
  • Dönüştürme hatalarıyla birlikte para birimi çiftini ve her iki temel gözlem zamanını da günlüğe kaydedin.

Yuvarlamayı hesaplama sırasında değil, gösterimde yapın

Çarpma işlemi boyunca tam hassasiyeti koruyun ve son ondalık basamak sayısına gösterim yereline karar verdirin. Intl.NumberFormat, alttaki değeri değiştirmeden para birimi sembollerini ve gruplamayı işler:

javascript · locale-aware displaycopy
function formatPrice(amount, currency, locale) {
  return new Intl.NumberFormat(locale, {
    style: "currency",
    currency,
  }).format(amount);
}

console.log(formatPrice(result.prices.IDR, "IDR", "id-ID"));
console.log(formatPrice(result.prices.JPY, "JPY", "ja-JP"));

Sonucu gösterge niteliğinde bir değer olarak kullanın

Hesaplanan bir piyasa değeri, bir sikke veya külçenin perakende fiyatı değildir. Bayi primleri, vergiler, işçilik, ödeme ücretleri ve işlem yapılabilir döviz spreadleri bu formülün dışındadır. Uygulamanız gerçek bir bayi kotasyonu ve onun ticari koşullarını eklemedikçe çıktıyı gösterge niteliğinde olarak etiketleyin.

Bu vaka analizinin kanıtladığı şey

goldprice.dev, exchangerate.dev'in bir üretim fiyatlandırma iş akışının döviz bacağını sağlayabildiğine dair birinci taraf kanıttır. Bağımsız bir sosyal kanıt değildir. Faydalı kanıt daha dar kapsamlı ve yeniden üretilebilirdir: geliştiriciler aynı genel ürünleri çağırabilir, her iki gözlem zamanını da koruyabilir ve aritmetiği kendileri doğrulayabilir.

MM
exchangerate.dev
Geliştiriciler için üretim entegrasyonu notları.

Keep reading

Referencesource ve market_session değerlerini okumaRead TutorialJavaScript ve Node.js'te para birimi dönüştürmeRead GuideGösterge niteliğindeki ve işlem yapılabilir döviz kurlarıRead