class KillBAPIError extends Error {
constructor(response) {
super(response.message.join(', '));
this.errorCode = response.errorCode;
this.statusCode = response.statusCode;
this.arguments = response.arguments;
}
}
const makeAPIRequest = async (endpoint, options) => {
try {
const response = await fetch(endpoint, options);
if (!response.ok) {
const error = await response.json();
throw new KillBAPIError(error);
}
return await response.json();
} catch (error) {
if (error instanceof KillBAPIError) {
// 处理 API 错误
console.error(`API 错误 ${error.errorCode}:`, error.message);
if (error.statusCode === '401') {
// 令牌已过期,刷新
await refreshToken();
return makeAPIRequest(endpoint, options);
}
if (error.errorCode === 'RAMP.0001') {
// 报价已过期,获取新报价
const newQuote = await getNewQuotation();
// 使用新报价重试
}
}
throw error;
}
};