Laravel 项目接入黄金价格API示例

AI摘要
本文介绍了在Laravel项目中通过API获取实时黄金价格的技术实现方案。作为知识分享,详细说明了如何创建命令行命令来请求外部接口、将数据存入数据库,以及如何通过Blade模板展示历史价格。文章还提及了结合定时任务、WebSocket或队列进行性能优化的建议。

**

在 Laravel 项目中,需要实时获取黄金价格进行展示或分析,可以通过服务端请求 API 来实现。下面给出一个示例,展示如何获取并存储数据。

接口请求示例

使用 Laravel 的 Http 客户端请求接口,并将返回数据存入数据库。像 AllTick API 提供的行情接口,就可以方便获取实时黄金价格:

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\Http;
use App\Models\GoldPrice;

class FetchGoldPrice extends Command
{
    protected $signature = 'fetch:goldprice';
    protected $description = '获取最新黄金价格并存储';

    public function handle()
    {
        $response = Http::get('https://apis.alltick.co/market/gold/latest', [
            'symbol' => 'XAUUSD',
        ]);

        if ($response->ok()) {
            $data = $response->json();
            GoldPrice::create([
                'price' => $data['price'],
                'currency' => $data['currency'],
                'timestamp' => now(),
            ]);
            $this->info('黄金价格更新完成:' . $data['price']);
        } else {
            $this->error('获取黄金价格失败');
        }
    }
}

通过 Laravel 定时任务调度这个命令,可以保持数据相对实时。

数据展示方式

在 Blade 模板中,可以用表格展示历史价格:

<table class="table-auto border-collapse border border-gray-300">
    <thead>
        <tr>
            <th class="border border-gray-300 px-4 py-2">时间</th>
            <th class="border border-gray-300 px-4 py-2">价格(USD</th>
        </tr>
    </thead>
    <tbody>
        @foreach($prices as $price)
        <tr>
            <td class="border border-gray-300 px-4 py-2">{{ $price->timestamp }}</td>
            <td class="border border-gray-300 px-4 py-2">{{ $price->price }}</td>
        </tr>
        @endforeach
    </tbody>
</table>

结合定时任务或 WebSocket 推送,前端数据显示可以接近实时。

使用提示

  • API 地址可根据官方文档调整。

  • 数据可以存数据库,也可直接返回前端使用。

  • 对高频数据需求,可结合队列和缓存优化性能。

**

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!