喺 PHP 同 Laravel 攞匯率
用 Laravel HTTP 客戶端、bearer 認證、有限逾時同埋新鮮度欄位,攞埋快取實時匯率。
一個細細嘅 Laravel 服務就可以call exchangerate.dev、拒絕錯誤回應,仲可以將完整嘅匯率觀測快取 60 秒。密鑰放喺設定入面,同匯率一齊回傳 source、market_session 同 data_updated_at。
Key points
用 Laravel HTTP 客戶端嘅 bearer 認證、逾時同
throw()。快取完整成功嘅回應 60 秒,穩穩陣陣咁留喺 Free 每分鐘 12 次請求嘅限制之內。
密鑰保存喺
config/services.php,透過 EXCHANGERATE_API_KEY 讀取,唔好寫入應用程式碼度。要精確計算金額就要用十進制程式庫。
整一個有快取嘅匯率服務
服務用基礎貨幣同排好序嘅代碼,整一個穩定嘅快取鍵。throw() 會喺 Laravel 寫入快取之前就執行,所以錯誤唔會變成匯率資料。
喺原始碼之外設定密鑰
讀取匯率同觀測欄位
call $service->latest("USD", ["EUR", "GBP"]),再讀 $result["rates"]["EUR"]。同時要保留 $result["source"]、$result["market_session"] 同 $result["data_updated_at"]。
唔好將錯誤快取成匯率
401 即係密鑰或者標頭錯誤,429 即係超出咗請求限制。畀個請求失敗啦,適時退避,舊觀測就淨係可以連同原本更新時間一齊保留。
- 整快取鍵之前,要先將貨幣代碼排好序。
- 設定有限嘅 HTTP 逾時。
- 讀取同快取 JSON 之前要call throw。
- 淨係四捨五入最終金額,唔好處理 API 匯率。
ER
exchangerate.dev
為用緊外匯數據嘅開發者而設嘅整合指南。