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 协议》,转载必须注明作者和本文链接
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

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