股票数据代理服务 - 基于新浪财经API
本项目为股票训练应用提供后端数据服务,代理新浪财经的股票日K线数据。
npm installnpm run dev服务将启动在 http://localhost:3001
npm run build
npm startGET /health
GET /api/stock/kline?code=600519&days=500
参数:
code(string): 股票代码,如 600519(贵州茅台)days(number): 数据天数,默认500,最大1023
响应示例:
{
"symbol": "sh600519",
"code": "600519",
"name": "贵州茅台",
"exchange": "sh",
"data": [
{
"day": "2024-01-26",
"open": 1340.51,
"high": 1355,
"low": 1325.12,
"close": 1342,
"volume": 8016606
}
],
"dataCount": 1
}GET /api/stock/info?code=600519
响应示例:
{
"symbol": "sh600519",
"code": "600519",
"name": "贵州茅台",
"exchange": "sh"
}- Node.js + TypeScript
- Express - Web框架
- Axios - HTTP客户端
- iconv-lite - 编码转换(处理新浪GBK编码)
- 新浪财经 API
- K线数据:
http://money.finance.sina.com.cn/quotes_service/api/json_v2.php/CN_MarketData.getKLineData - 实时行情:
http://hq.sinajs.cn
- K线数据:
stock-server/
├── src/
│ ├── index.ts # 入口文件
│ ├── routes/
│ │ └── stock.ts # 股票路由
│ ├── services/
│ │ └── sinaService.ts # 新浪API服务
│ └── types/
│ └── stock.ts # 类型定义
├── package.json
├── tsconfig.json
└── README.md
- 新浪API限制:最多返回1023条数据
- 股票代码格式:自动识别上海(sh)和深圳(sz)交易所
- 请求头要求:必须添加 Referer 头才能正常访问新浪API
假设前端项目运行在 http://localhost:5173,添加如下代理配置:
vite.config.ts:
export default defineConfig({
server: {
proxy: {
'/api': {
target: 'http://localhost:3001',
changeOrigin: true,
},
},
},
});这样前端可以通过 /api/stock/kline?code=600519 访问股票数据。