跳至主要内容

市場

獲取市場列表

獲取帶有篩選選項嘅分頁市場列表。

端點: GET /api/v1/markets

查詢參數:

參數類型描述
statusstring按市場狀態篩選(live、active、closed、disputing、resolved、resolution_proposed)
pagenumber分頁頁碼
pageSizenumber每頁結果數量

獲取市場詳情

通過市場 ID 獲取特定市場嘅詳細資訊。

端點: GET /api/v1/markets/{marketId}

路徑參數:

參數類型描述
marketIdstring唯一市場識別碼

市場狀態

市場可以有以下狀態:

狀態描述
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');

最佳實踐

  1. 緩存:適當緩存市場數據,因為元數據唔會經常變動
  2. 分頁:對大量結果集使用分頁嚟提升效能
  3. 錯誤處理:對短暫網絡錯誤實施重試邏輯
  4. 速率限制:遵守 API 速率限制(100 請求/分鐘,突發 20 請求/秒)
  5. 數據驗證:喺使用之前驗證市場同結果 ID

相關文檔