前端: 新增 RealTimeQuoteResponse 类型;新增 useRealtimeQuote Hook 并在报告页图表旁展示价格与时间戳(严格 TTL,无兜底)
FastAPI: 新增 GET /financials/{market}/{symbol}/realtime?max_age_seconds=.. 只读端点;通过 DataPersistenceClient 读取 Rust 缓存
Rust: 新增 realtime_quotes hypertable 迁移;新增 POST /api/v1/market-data/quotes 与 GET /api/v1/market-data/quotes/{symbol}?market=..;新增 DTO/Model/DB 函数;修正 #[api] 宏与路径参数;生成 SQLx 离线缓存 (.sqlx) 以支持离线构建
Python: DataPersistenceClient 新增 upsert/get 实时报价,并调整 GET 路径与参数
说明: TradingView 图表是第三方 websocket,不受我们缓存控制;页面数值展示走自有缓存通路,统一且可控。
87 lines
2.6 KiB
Markdown
87 lines
2.6 KiB
Markdown
# WASM CLI - API调用功能已实现
|
||
|
||
## 🎉 问题已解决
|
||
|
||
之前WASM CLI只显示"Successfully matched command"而不执行实际API调用的问题已经修复!
|
||
|
||
## 🔧 修复内容
|
||
|
||
1. **实现了真正的HTTP API调用**: 使用JavaScript的fetch API替代了原来的命令匹配功能
|
||
2. **添加了WASM绑定**: 通过web-sys和wasm-bindgen-futures实现异步HTTP请求
|
||
3. **修复了依赖冲突**: 通过特性门控解决了reqwest在WASM环境下的兼容性问题
|
||
4. **新增异步API**: `run_command_async()` 函数现在可以真正执行API请求并返回结果
|
||
|
||
## 📋 主要更改
|
||
|
||
### 1. 新的初始化函数
|
||
```javascript
|
||
// 旧版本
|
||
init_cli(spec_json)
|
||
|
||
// 新版本 - 需要同时传递OpenAPI规范和base URL
|
||
init_cli(spec_json, base_url)
|
||
```
|
||
|
||
### 2. 新的异步命令执行函数
|
||
```javascript
|
||
// 新增 - 真正执行API调用
|
||
const result = await run_command_async("v1.hello.get");
|
||
|
||
// 旧版本 - 已废弃,只返回错误信息
|
||
const result = run_command("v1.hello.get");
|
||
```
|
||
|
||
## 🚀 使用方法
|
||
|
||
### 1. 初始化CLI
|
||
```javascript
|
||
import init, { init_cli, run_command_async } from './pkg/forge_cli_wasm.js';
|
||
|
||
// 初始化WASM模块
|
||
await init();
|
||
|
||
// 获取OpenAPI规范
|
||
const response = await fetch('http://localhost:3000/api-docs/openapi.json');
|
||
const spec = await response.text();
|
||
|
||
// 初始化CLI
|
||
init_cli(spec, 'http://localhost:3000');
|
||
```
|
||
|
||
### 2. 执行API命令
|
||
```javascript
|
||
// 执行GET请求
|
||
const result1 = await run_command_async("v1.hello.get");
|
||
|
||
// 执行带参数的请求
|
||
const result2 = await run_command_async("v1.add.get --a 1 --b 2");
|
||
|
||
// 执行POST请求(如果API支持)
|
||
const result3 = await run_command_async('v1.create.post --body \'{"name": "test"}\'');
|
||
```
|
||
|
||
## 🧪 测试
|
||
|
||
打开 `test.html` 文件在浏览器中测试:
|
||
|
||
1. 确保你的服务已运行在 http://localhost:3000
|
||
2. 点击 "Initialize CLI" 按钮
|
||
3. 输入命令如 "v1.hello.get" 或 "v1.add.get --a 1 --b 2"
|
||
4. 点击 "Run Command" 按钮
|
||
5. 查看实际的API响应结果
|
||
|
||
## ⚠️ 重要注意事项
|
||
|
||
1. **旧的`run_command`函数已废弃**: 请使用新的`run_command_async`函数
|
||
2. **需要CORS支持**: 确保你的API服务器支持跨域请求
|
||
3. **异步操作**: 所有API调用现在都是异步的,需要使用`await`
|
||
4. **错误处理**: API请求失败时会返回错误信息而不是抛出异常
|
||
|
||
## 🔍 调试
|
||
|
||
- 打开浏览器开发者工具查看控制台日志
|
||
- 网络请求会显示在Network标签页中
|
||
- 任何错误都会在输出区域显示
|
||
|
||
现在你的WASM CLI可以真正与API进行交互,不再只是"匹配命令"了!🎉
|