使用 Node.js 对接 StockTV 全球金融市场 API
在当今全球化的金融市场中,获取准确、实时的金融数据对于投资者和开发者来说至关重要。StockTV 提供了一个强大的 API 接口,涵盖了全球股票、外汇、期货和加密货币等多方面的数据。本文将介绍如何使用 Node.js 对接这个 API,并通过示例代码展示如何获取和处理数据。
一、项目准备
1. 环境搭建
在开始之前,确保你的开发环境中已经安装了 Node.js 和 npm(Node Package Manager)。如果没有安装,可以从 Node.js 官方网站 下载并安装适合你操作系统的版本。
2. 创建项目
创建一个新的 Node.js 项目,并初始化项目配置:
mkdir stocktv-api-demo
cd stocktv-api-demo
npm init -y
3. 安装依赖
为了简化 HTTP 请求的处理,我们将使用 axios
库。通过 npm 安装 axios
:
npm install axios
此外,为了更好地处理和转换时间格式,建议安装 moment
库:
npm install moment
二、对接 API
1. 获取 API Key
在使用 StockTV 的 API 之前,需要先获取一个 API Key。根据官方文档的说明,联系 StockTV 的客服以获取 Key。通常,这个 Key 将用于所有 API 请求的认证。
2. 封装 API 请求工具
为了方便后续的 API 调用,我们可以封装一个通用的 API 请求工具。创建一个名为 apiClient.js
的文件,并添加以下代码:
const axios = require('axios');
const API_BASE_URL = 'https://api.stocktv.top';
const API_KEY = '你的API_KEY'; // 替换为你的实际 API Key
const apiClient = axios.create({
baseURL: API_BASE_URL,
timeout: 10000,
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
});
// 添加请求拦截器,为每个请求自动添加 API Key
apiClient.interceptors.request.use(function (config) {
const params = config.params || {};
params.key = API_KEY;
config.params = params;
return config;
});
module.exports = apiClient;
3. 调用示例
(1)获取全球股票市场列表
const apiClient = require('./apiClient');
async function getGlobalStocks() {
try {
const response = await apiClient.get('/stock/stocks', {
params: {
countryId: 14, // 例如 14 代表印度
pageSize: 10,
page: 1
}
});
console.log('获取全球股票市场列表成功:', response.data);
return response.data;
} catch (error) {
console.error('获取全球股票市场列表失败:', error);
throw error;
}
}
// 调用函数
getGlobalStocks();
(2)获取外汇市场列表
async function getCurrencyList() {
try {
const response = await apiClient.get('/market/currencyList');
console.log('获取外汇市场列表成功:', response.data);
return response.data;
} catch (error) {
console.error('获取外汇市场列表失败:', error);
throw error;
}
}
// 调用函数
getCurrencyList();
(3)获取期货市场列表
async function getFuturesList() {
try {
const response = await apiClient.get('/futures/list');
console.log('获取期货市场列表成功:', response.data);
return response.data;
} catch (error) {
console.error('获取期货市场列表失败:', error);
throw error;
}
}
// 调用函数
getFuturesList();
(4)获取加密货币交易对信息
async function getCryptoCoinInfo() {
try {
const response = await apiClient.get('/crypto/getCoinInfo');
console.log('获取加密货币交易对信息成功:', response.data);
return response.data;
} catch (error) {
console.error('获取加密货币交易对信息失败:', error);
throw error;
}
}
// 调用函数
getCryptoCoinInfo();
三、数据处理与展示
1. 数据解析
API 返回的数据通常是以 JSON 格式封装的。在 Node.js 中,可以直接使用 response.data
来获取解析后的 JavaScript 对象。例如:
const data = response.data;
if (data.code === 200) {
console.log('操作成功,数据:', data.data);
} else {
console.error('操作失败,错误信息:', data.message);
}
2. 时间格式处理
API 返回的时间戳可能需要转换为更易读的日期格式。使用 moment
库可以方便地进行时间格式的转换:
const moment = require('moment');
const timestamp = 1716448222; // 示例时间戳
const readableDate = moment.unix(timestamp).format('YYYY-MM-DD HH:mm:ss');
console.log('可读日期:', readableDate);
3. 数据展示
在实际应用中,可以根据需求将数据展示在控制台、网页或其他用户界面中。例如,在控制台中格式化输出股票信息:
function formatStockData(stock) {
return `
股票名称: ${stock.name}
股票代码: ${stock.symbol}
最新价格: ${stock.last}
涨跌幅: ${stock.chgPct}%
交易量: ${stock.volume}
`;
}
console.log(formatStockData(stockData));
四、WebSocket 实时数据推送
StockTV 还提供了 WebSocket 接口,用于实时获取金融数据的更新。以下是使用 Node.js 连接 WebSocket 并接收实时数据的示例:
const WebSocket = require('ws');
function connectWebSocket() {
const wsUri = `wss://ws-api.stocktv.top/connect?key=${API_KEY}`;
const ws = new WebSocket(wsUri);
ws.on('open', () => {
console.log('WebSocket 连接已打开');
});
ws.on('message', (data) => {
console.log('收到实时数据:', data.toString());
// 在这里处理接收到的实时数据
});
ws.on('close', () => {
console.log('WebSocket 连接已关闭');
});
ws.on('error', (error) => {
console.error('WebSocket 错误:', error);
});
return ws;
}
// 使用 WebSocket
const wsClient = connectWebSocket();
五、注意事项
1. API Key 安全
在实际项目中,务必妥善保管你的 API Key,避免泄露。可以将 Key 存储在环境变量或配置文件中,并确保其不会被公开。
2. 错误处理
在调用 API 时,可能会遇到各种错误,如网络问题、参数错误等。因此,在代码中添加适当的错误处理机制是非常重要的。
3. 数据更新频率
根据不同的金融数据类型,其更新频率可能不同。在使用实时数据时,需要注意数据的时效性和更新间隔。
六、总结
通过本文的介绍,我们了解了如何使用 Node.js 对接 StockTV 的全球金融市场 API。从环境搭建到 API 请求的封装,再到数据的处理与展示,每一步都进行了详细的讲解和示例演示。这个 API 为开发者提供了丰富的金融数据资源,可以帮助我们构建各种金融分析工具和应用程序。希望本文对你在金融数据开发领域有所帮助,如果你有任何问题或建议,欢迎随时交流探讨。