@pddo/exchange-rate-sdk

汇率API的TypeScript SDK,提供简洁易用的接口来访问实时汇率数据和货币转换功能。
✨ 特性
- 🚀 TypeScript支持: 完整的类型定义,提供优秀的开发体验
- 🌐 现代化API: 基于Promise的异步API,支持async/await
- 🛡️ 错误处理: 完善的错误处理机制和自定义错误类型
- ⚡ 高性能: 内置请求超时和批量操作支持
- 🔧 可配置: 灵活的配置选项,支持自定义域名和请求头
- 📦 轻量级: 零依赖,体积小巧
- 🌍 多环境: 支持Node.js和浏览器环境
📦 安装
npm install @pddo/exchange-rate-sdk
yarn add @pddo/exchange-rate-sdk
pnpm add @pddo/exchange-rate-sdk
bun add @pddo/exchange-rate-sdk
🚀 快速开始
基础用法
import { ExchangeRateSDK } from '@pddo/exchange-rate-sdk';
const sdk = new ExchangeRateSDK();
const rate = await sdk.getExchangeRate('USD', 'EUR');
console.log(`1 USD = ${rate.data} EUR`);
const result = await sdk.convertCurrency('USD', 'CNY', 100);
console.log(`100 USD = ${result.data} CNY`);
使用便捷函数
import { createExchangeRateSDK } from '@pddo/exchange-rate-sdk';
const sdk = createExchangeRateSDK({
baseURL: 'https://your-api.com',
timeout: 5000,
debug: true
});
自定义配置
import { ExchangeRateSDK } from '@pddo/exchange-rate-sdk';
const sdk = new ExchangeRateSDK({
baseURL: 'https://exchange-api.pd.do',
timeout: 10000,
headers: {
'X-Custom-Header': 'value'
},
debug: false
});
📖 API 文档
ExchangeRateSDK
构造函数
new ExchangeRateSDK(options?: ExchangeRateSDKOptions)
配置选项
interface ExchangeRateSDKOptions {
baseURL?: string;
timeout?: number;
headers?: Record<string, string>;
debug?: boolean;
}
主要方法
1. 获取特定基准货币的所有汇率
async getCurrencyRates(currency: string): Promise<CurrencyRatesResponse>
示例:
const rates = await sdk.getCurrencyRates('USD');
console.log(rates.data.EUR);
console.log(rates.data.CNY);
2. 获取两种货币之间的汇率
async getExchangeRate(baseCurrency: string, targetCurrency: string): Promise<RateResponse>
示例:
const rate = await sdk.getExchangeRate('EUR', 'USD');
console.log(`1 EUR = ${rate.data} USD`);
3. 进行货币转换
async convertCurrency(baseCurrency: string, targetCurrency: string, amount: number): Promise<ConversionResponse>
示例:
const result = await sdk.convertCurrency('GBP', 'JPY', 50);
console.log(`50 GBP = ${result.data} JPY`);
console.log(`汇率: ${result.rate}`);
4. 批量获取汇率
async getBatchRates(pairs: Array<[string, string]>): Promise<Array<RateResponse>>
示例:
const rates = await sdk.getBatchRates([
['USD', 'EUR'],
['USD', 'CNY'],
['EUR', 'JPY']
]);
rates.forEach(rate => {
console.log(`${rate.base_code} -> ${rate.target_code}: ${rate.data}`);
});
5. 批量货币转换
async batchConvert(conversions: Array<{from: string, to: string, amount: number}>): Promise<Array<ConversionResponse>>
示例:
const results = await sdk.batchConvert([
{ from: 'USD', to: 'EUR', amount: 100 },
{ from: 'EUR', to: 'CNY', amount: 50 },
{ from: 'GBP', to: 'JPY', amount: 25 }
]);
results.forEach(result => {
console.log(`${result.base_code} -> ${result.target_code}: ${result.data}`);
});
6. 手动更新汇率(需要密码)
async updateRates(password: string): Promise<UpdateResponse>
示例:
try {
const result = await sdk.updateRates('your-password');
console.log('汇率更新成功:', result.message);
} catch (error) {
console.error('更新失败:', error.message);
}
工具方法
获取常用货币列表
const currencies = sdk.getCommonCurrencies();
console.log(currencies);
验证货币代码格式
console.log(sdk.isValidCurrencyFormat('USD'));
console.log(sdk.isValidCurrencyFormat('us'));
格式化货币代码
console.log(sdk.formatCurrency('usd'));
console.log(sdk.formatCurrency(' eur '));
🔧 高级用法
错误处理
import { ExchangeRateAPIError } from '@pddo/exchange-rate-sdk';
try {
const rate = await sdk.getExchangeRate('INVALID', 'USD');
} catch (error) {
if (error instanceof ExchangeRateAPIError) {
console.error('API错误:', error.message);
console.error('状态码:', error.status);
console.error('错误代码:', error.code);
} else {
console.error('未知错误:', error);
}
}
动态配置更新
sdk.updateConfig({
baseURL: 'https://new-api.com',
debug: true,
headers: {
'Authorization': 'Bearer token'
}
});
自定义HTTP客户端
import { HttpClient } from '@pddo/exchange-rate-sdk';
const client = new HttpClient({
baseURL: 'https://api.example.com',
timeout: 5000,
debug: true
});
const response = await client.get('/custom-endpoint');
📝 响应类型
CurrencyRatesResponse
interface CurrencyRatesResponse {
message: string;
data: Record<string, number>;
}
RateResponse
interface RateResponse {
message: string;
data: number;
base_code: string;
target_code: string;
}
ConversionResponse
interface ConversionResponse {
message: string;
data: number;
rate: number;
base_code: string;
target_code: string;
}
🌍 支持的货币
SDK支持所有ISO 4217标准的货币代码,常用货币包括:
- 主要货币: USD, EUR, CNY, JPY, GBP, AUD, CAD, CHF
- 亚洲货币: HKD, SGD, KRW, INR, THB, IDR, MYR, PHP
- 欧洲货币: SEK, NOK, DKK, PLN, HUF, CZK, RON
- 其他货币: MXN, BRL, ZAR, TRY, RUB, AED, SAR
🛠 开发
git clone https://github.com/catpddo/exchange-rate.git
cd exchange-rate/sdk
bun install
bun run dev
bun run build
bun run type-check
📄 许可证
MIT License - 详见 LICENSE 文件
🤝 贡献
欢迎提交 Issue 和 Pull Request!
🔗 相关链接
📞 支持
如有问题或建议,请: