PHPとLaravelで為替レートを取得する
LaravelのHTTPクライアント、bearer認証、有限のタイムアウト、鮮度メタデータを使ってライブレートを取得・キャッシュする。
小さなLaravelサービスでexchangerate.devを呼び出し、HTTPエラーを拒否し、完全なFX観測を60秒キャッシュできる。キーは設定に置き、レートとともにsource、market_session、data_updated_atを返す。
Key points
Laravel HTTPクライアントでbearer認証、タイムアウト、
throw()を使う。成功した完全な応答を60秒キャッシュする。
EXCHANGERATE_API_KEYからキーを読む。正確な金額計算には10進数ライブラリを使う。
キャッシュ付きFXサービスを作る
このサービスはベースとソート済みシンボルから安定したキャッシュキーを作る。throw()がLaravelのキャッシュ書き込み前に実行されるため、失敗応答はレートとして保存されない。
キーをソース管理外に設定する
レートと観測フィールドを読む
$service->latest("USD", ["EUR", "GBP"])を呼び、$result["rates"]["EUR"]を読む。$result["source"]、$result["market_session"]、$result["data_updated_at"]も保持する。
エラーをレートとしてキャッシュしない
401はキーまたはヘッダーの誤り、429は要求上限超過を示す。失敗させ、以前の成功観測を残す場合は元の更新時刻も残す。
- キャッシュキー作成前にシンボルをソートする。
- 有限のHTTPタイムアウトを設定する。
- JSONを読む前にthrowを呼ぶ。
- APIレートではなく最終金額を丸める。
MM
exchangerate.dev
FXデータを扱う開発者向けの統合ガイド。