JavaScriptとNode.jsによる通貨換算
グローバルfetch APIでライブ為替レートを取得し、JavaScriptで金額を換算する。Node 18+、Deno、Bun、モダンブラウザで動作。キーなしで始められ、無料枠は月10,000コール。
JavaScriptで為替レートを取得する最短ルートは、fetchで/v1/latest/USDにGETすることだ。レスポンスは31通貨のレートと2つの鮮度フィールド(sourceとmarket_session)を含むプレーンなJSONで返る。最初のコールにAPIキーは不要。
fetchはNode 18+、Deno、Bun、ブラウザで追加依存なしにそのまま使える。/v1/latest/{base}への1回のGETで31通貨のレートとsource、market_sessionが返る。Authorization: Bearer exr_live_...で渡す。Authorizationを設定できないプラットフォームではX-API-Keyを使う。最初のコール — キー不要
Node 18やモダンブラウザにはfetchが最初から入っている。EURレートを読むにはawait 1回で足りる:
匿名コールはIPアドレスごとに上限があるため、簡単な試験を超えたら無料キーに移行する。
キーとエラーハンドリングを追加する
キーはAuthorizationヘッダーのベアラートークンとして渡す。res.okを確認し、異常ステータスではthrowしてエラーを早期に表面化させる:
X-API-Key: exr_live_...ヘッダーも受け付けられる。Authorizationヘッダーを設定できないプラットフォーム(一部のサーバーレスランタイム、Zapierなどのノーコードツール)向けだ。
金額を換算する
直接換算するには/v1/convert/{from}/{to}/{amount}を呼ぶ。レスポンスは1往復でレートと換算額の両方を返す:
convertエンドポイントもlatestと同じsourceとmarket_sessionフィールドを返すため、レートの種別とインターバンクの取引週が開いているかをユーザーに示せる。
sourceとmarket_sessionを理解する
すべてのレスポンスには、レートの鮮度と種別を示す2つのフィールドがある。sourceはデータの種別を示す:liveは取引週を通じて約60秒ごとに更新される集約スポットのコンセンサス値、ecb_dailyは欧州中央銀行が営業日1回16:00 CET頃に公表する参照フィックス、fred_dailyは米連邦準備制度の日次系列。market_sessionはopen、weekend、既知の平日休場を示すinterbank_closedのいずれかになる。
data_updated_atフィールドは元のレートが最後に書き込まれた時刻を示す。timestampはレスポンスが生成された時刻だ。この2つを合わせて、値のキャッシュ方法と表示方法を決められる。
noticeフィールドにその旨が記載されている。無料枠の上限
無料キーは月10,000コール・毎分12リクエスト。登録にカードは不要。毎分の上限を超えるとAPIは429を返すので、バックオフしてリトライする。月間クォータは課金起算日にリセットされる。
- 月10,000コール
- 毎分12リクエスト
- クレジットカード不要
/v1/latest、/v1/convert、/v1/range、/v1/{date}/{base}をカバー