市場
獲取市場列表
獲取帶有篩選選項嘅分頁市場列表。
端點: GET /api/v1/markets
查詢參數:
| 參數 | 類型 | 描述 |
|---|---|---|
| status | string | 按市場狀態篩選(live、active、closed、disputing、resolved、resolution_proposed) |
| page | number | 分頁頁碼 |
| pageSize | number | 每頁結果數量 |
獲取市場詳情
通過市場 ID 獲取特定市場嘅詳細資訊。
端點: GET /api/v1/markets/{marketId}
路徑參數:
| 參數 | 類型 | 描述 |
|---|---|---|
| marketId | string | 唯一市場識別碼 |
市場狀態
市場可以有以下狀態:
| 狀態 | 描述 |
|---|---|
| live | 市場開放交易中 |
| active | 市場活躍但可能有交易限制 |
| closed | 市場已關閉交易 |
| disputing | 市場結算正喺爭議中 |
| resolved | 市場已結算 |
| resolution_proposed | 已提出結算方案,等待確認 |
代碼範例
獲取活躍市場
const API_KEY = 'YOUR_API_KEY';
const BASE_URL = 'https://engine.xmarket.app/api/v1';
async function getActiveMarkets() {
const response = await fetch(
`${BASE_URL}/markets?status=live&pageSize=50`,
{
headers: {
'x-api-key': API_KEY,
'Content-Type': 'application/json'
}
}
);
const data = await response.json();
return data.items;
}
獲取市場詳情
async function getMarketDetail(marketId) {
const response = await fetch(
`${BASE_URL}/markets/${marketId}`,
{
headers: {
'x-api-key': API_KEY,
'Content-Type': 'application/json'
}
}
);
if (!response.ok) {
throw new Error(`Market not found: ${response.status}`);
}
const market = await response.json();
console.log(`市場: ${market.name}`);
console.log(`狀態: ${market.status}`);
console.log(`結果數量: ${market.outcomes.length}`);
return market;
}
// 使用範例
const market = await getMarketDetail('market-uuid-here');
按狀態篩選市場
async function getMarketsByStatus(status) {
const response = await fetch(
`${BASE_URL}/markets?status=${status}&page=1&pageSize=100`,
{
headers: {
'x-api-key': API_KEY,
'Content-Type': 'application/json'
}
}
);
const data = await response.json();
console.log(`搵到 ${data.total} 個 ${status} 市場`);
return data.items;
}
// 獲取所有已結算市場
const resolvedMarkets = await getMarketsByStatus('resolved');
// 獲取爭議中市場
const disputingMarkets = await getMarketsByStatus('disputing');
最佳實踐
- 緩存:適當緩存市場數據,因為元數據唔會經常變動
- 分頁:對大量結果集使用分頁嚟提升效能
- 錯誤處理:對短暫網絡錯誤實施重試邏輯
- 速率限制:遵守 API 速率限制(100 請求/分鐘,突發 20 請求/秒)
- 數據驗證:喺使用之前驗證市場同結果 ID