Tutorial/PHP และ Laravel

อัตราแลกเปลี่ยนใน PHP และ Laravel

ดึงและแคชอัตราด้วย Laravel HTTP client, bearer auth, timeout และข้อมูลความใหม่

MMexchangerate.dev·Jul 17, 2026·อ่าน 6 นาที

บริการ Laravel ปฏิเสธ error และแคชข้อมูล FX ครบ 60 วินาที เก็บ key ใน config และคืน source, market_session, data_updated_at

Key points
ใช้ bearer auth, timeout และ throw()
แคช response ที่สำเร็จ 60 วินาที
อ่าน key จาก EXCHANGERATE_API_KEY
ใช้ไลบรารี decimal เมื่อต้องการความแม่นยำ

สร้างบริการ FX ที่มีแคช

บริการสร้าง cache key จาก base และ symbols ที่เรียงแล้ว โดย throw() ทำงานก่อนเขียนแคช

php · app/Services/ExchangeRateService.phpcopy
<?php

namespace App\Services;

use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Http;

final class ExchangeRateService
{
    public function latest(string $base, array $symbols): array
    {
        sort($symbols);
        $symbolList = implode(',', $symbols);
        $cacheKey = "fx:latest:{$base}:{$symbolList}";

        return Cache::remember($cacheKey, now()->addSeconds(60), function () use (
            $base,
            $symbolList,
        ): array {
            return Http::acceptJson()
                ->withToken(config('services.exchangerate.key'))
                ->timeout(5)
                ->get(
                    "https://api.exchangerate.dev/v1/latest/{$base}",
                    ['symbols' => $symbolList],
                )
                ->throw()
                ->json();
        });
    }
}

ตั้ง key นอก source code

php · config/services.php and .envcopy
// config/services.php
'exchangerate' => [
    'key' => env('EXCHANGERATE_API_KEY'),
],

// .env (never commit the real value)
EXCHANGERATE_API_KEY=exr_live_...

อ่านอัตราและข้อมูลการสังเกต

หลัง $service->latest("USD", ["EUR", "GBP"]) ให้อ่าน $result["rates"]["EUR"] และเก็บฟิลด์แหล่งที่มาและเวลา

อย่าแคช error เป็นอัตรา
401 คือ key ผิด และ 429 คือเกิน limit ให้เก็บค่าเก่าได้เฉพาะพร้อมเวลาเดิม
  • เรียง symbols
  • ตั้ง timeout
  • เรียก throw ก่อน cache
  • ปัดเฉพาะยอดสุดท้าย
MM
exchangerate.dev
คู่มือเชื่อมต่อสำหรับนักพัฒนาที่ใช้ข้อมูล FX

Keep reading

Guideข้อมูล FX ย้อนหลังในคำขอเดียวRead Referenceอ่าน source และ market_sessionRead Guideอัตราเพื่ออ้างอิงและอัตราที่ซื้อขายได้Read