@ coinmarketcap/ sdk
官方类型SDK CoinMarket Cap Pro API 密码。 。 。 .
安装
npm install @coinmarketcap/sdk
# or
yarn add @coinmarketcap/sdk
# or
pnpm add @coinmarketcap/sdk
快速启动
import { CoinMarketCap } from "@coinmarketcap/sdk";
const cmc = new CoinMarketCap({ apiKey: process.env.CMC_PRO_API_KEY! });
// Use the namespace API — discover endpoints by category with autocomplete
const { data, error } = await cmc.api.cryptocurrency.quotesLatest({
query: { id: "1,1027" }, // 1 = BTC, 1027 = ETH
});
if (data) {
console.log(data);
}
使用量
命名空间 API( 建议)
所有终点按类别分类 cmc.api数字 :
import { CoinMarketCap } from "@coinmarketcap/sdk";
const cmc = new CoinMarketCap({ apiKey: "your-key" });
await cmc.api.cryptocurrency.quotesLatest({ query: { id: "1" } });
await cmc.api.cryptocurrency.listingsLatest({ query: { limit: 10 } });
await cmc.api.globalMetrics.quotesLatest({});
await cmc.api.exchange.info({ query: { id: "270" } });
空函数( 外部客户端)
您也可以导入单个函数并明确通过客户端:
import {
CoinMarketCap,
getV1CryptocurrencyQuotesLatest,
} from "@coinmarketcap/sdk";
const cmc = new CoinMarketCap({ apiKey: "your-key" });
const { data } = await getV1CryptocurrencyQuotesLatest({
client: cmc.client,
query: { id: "1", convert: "USD" },
});
全球模式( 净值)
对于简单的脚本, init() 配置全局客户端, 这样光线函数不会通过 client数字 :
import { init, getV1CryptocurrencyQuotesLatest } from "@coinmarketcap/sdk";
const cmc = init({ apiKey: "your-key" });
// Namespace works on the returned instance
await cmc.api.cryptocurrency.quotesLatest({ query: { id: "1" } });
// Bare functions also work (use the global client)
await getV1CryptocurrencyQuotesLatest({ query: { id: "1" } });
配置选项
const cmc = new CoinMarketCap({
// Required for 'pro' mode
apiKey: "your-api-key",
// Optional
environment: "pro", // 'pro' (default) or 'public'
baseUrl: undefined, // Override base URL entirely
timeout: 30000, // Request timeout in ms (default: 30s)
maxRetries: 2, // Auto-retry count (default: 2)
fetch: customFetch, // Custom fetch implementation
});
公共( 无关键) 模式
使用没有 API 密钥的 公共 API 来获取 :
import { CoinMarketCap } from "@coinmarketcap/sdk";
const cmc = new CoinMarketCap({ environment: "public" });
await cmc.api.cryptocurrency.listingsLatest({ query: { limit: 10 } });
处理错误
SDK为常见的HTTP故障提供打入错误分类:
import {
CoinMarketCap,
CMCError,
RateLimitError,
AuthenticationError,
} from "@coinmarketcap/sdk";
const cmc = new CoinMarketCap({ apiKey: "your-key" });
const { data, error } = await cmc.api.cryptocurrency.quotesLatest({
query: { id: "1" },
});
if (error) {
if (error instanceof RateLimitError) {
console.log("Rate limited, retry after:", error.headers.get("Retry-After"));
} else if (error instanceof AuthenticationError) {
console.log("Invalid API key");
} else if (error instanceof CMCError) {
console.log(`API error ${error.status}:`, error.message);
}
}
错误类型
| 身份代码 | 错误类 |
|---|---|
| 400个 | BadRequestError |
| 401 (中文(简体) ) | AuthenticationError |
| 403 (韩语) | ForbiddenError |
| 404 (韩语) | NotFoundError |
| 429个 | RateLimitError |
| 5 (简体中文) | InternalServerError |
| 网络 | APIConnectionError |
| 超时 | APITimeoutError |
投出错误
或者,您可以抛出错误而不是返回错误 :
import { CoinMarketCap, RateLimitError } from "@coinmarketcap/sdk";
const cmc = new CoinMarketCap({ apiKey: "your-key" });
try {
const { data } = await cmc.api.cryptocurrency.quotesLatest({
query: { id: "1" },
throwOnError: true,
});
console.log(data);
} catch (err) {
if (err instanceof RateLimitError) {
// handle rate limit
}
}
自动检索
以可重试状态代码失败的请求会自动重试 :
- 可重试:408,409,429,500,502,503,504,网络出错和超时
- 默认: 2次复试,初始延迟500ms,最多可达8s
- 429个答复: 尊重
Retry-After标题, 以最大延迟( 8s) 为封顶, 因此一个大值无法拖住调用 - 人身安全: 在每次重试中正确重放请求对象( 包含 POST 端点)
禁用重试 :
const cmc = new CoinMarketCap({
apiKey: "your-key",
maxRetries: 0,
});
超时
默认30秒后请求超时 :
const cmc = new CoinMarketCap({
apiKey: "your-key",
timeout: 10_000, // 10 seconds
});
超时 APITimeoutError。 。 。 .
取消
通过一个 AbortSignal 取消飞行中的请求。 呼叫取消为
立即获得荣誉,而永不尝试
const controller = new AbortController();
const promise = cmc.api.cryptocurrency.quotesLatest({
query: { symbol: "BTC" },
signal: controller.signal,
});
controller.abort(); // rejects with an AbortError
可用终点
所有端点都可以通过 cmc.api.<category>.<method>()。见 日记 详细参考.
类别包括:
cmc.api.cryptocurrency- 引文、上市、市场对等、OHLCV、类别cmc.api.exchange——交换信息,上市,市场对等cmc.api.globalMetrics——全球统计、恐惧和贪婪指数cmc.api.content- 新闻,员额cmc.api.community- 趋势标志、专题cmc.api.token——DEX令牌数据,集合,交易cmc.api.derivatives- 衍生物市场数据cmc.api.cmcIndex- CMC 20/100指数
您也可以直接导入光线函数 :
import {
getV1CryptocurrencyListingsLatest,
getV1CryptocurrencyInfo,
getV1CryptocurrencyMap,
// ... 100+ more endpoints
} from "@coinmarketcap/sdk";
版本
SDK跟着 语义版本主要版本删除或 重命名方法,或以可以打破的方式更改返回类型或响应字段 已存在的代码。 一个小版本会添加端点或字段. 补丁版本修复错误 .
类型脚本( T)@coinmarketcap/sdk)和平松(原变种coinmarketcap-sdk) SDK 发布
和相同的版本编号。 SDK版本与API是分开的
端点版本( e)/v1, (中文(简体) ), /v2, (中文(简体) ), /v3) (中文(简体) ). 每个 变化 条目名称
OpenAPI spec 发行时从中构建并列出其断开的更改.
所需资源
- 节点.js 18
- TypeScript QQ 5.0(用于 TypeScript 用户)
许可证
麻省理工学院