Skip to content

JavaScript 调用示例 ​

先完成 本地密钥设置。

使用 Node.js fetch ​

这段示例运行在 Node.js,不能放进浏览器网页,否则访问网页的人可能取得 Key。使用当前 Node.js LTS;本项目的 Node.js 24 支持下面的参数。

新建 test_fetch.mjs:

javascript
// 配置由运行命令加载,不把 Key 写入源代码。
const { XKAPI_API_KEY, XKAPI_BASE_URL, XKAPI_MODEL } = process.env;
if (!XKAPI_API_KEY || !XKAPI_BASE_URL || !XKAPI_MODEL) {
  throw new Error('请检查 .env 的三项配置');
}
try {
  const response = await fetch(`${XKAPI_BASE_URL.replace(/\/$/, '')}/chat/completions`, {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${XKAPI_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      model: XKAPI_MODEL,
      messages: [{ role: 'user', content: '你好' }],
    }),
    signal: AbortSignal.timeout(60_000), // 最多等待 60 秒。
  });
  if (!response.ok) throw new Error(`HTTP ${response.status}`);
  const data = await response.json();
  console.log(data.choices[0].message.content);
} catch (error) {
  // 不输出请求对象,避免暴露认证头。
  console.error('请求失败:', error.name, error.message);
  process.exitCode = 1;
}
sh
# Node.js 从当前目录加载 .env 后运行脚本。
node --env-file=.env test_fetch.mjs

使用 axios ​

在单独的测试目录中,没有 package.json 时先初始化;已有文件就跳过初始化:

sh
# 只在没有 package.json 的测试目录运行初始化。
npm init -y
# 安装 axios。
npm install axios

新建 test_axios.mjs:

javascript
import axios from 'axios';
// 从环境变量读取地址、密钥和模型。
const { XKAPI_API_KEY, XKAPI_BASE_URL, XKAPI_MODEL } = process.env;
if (!XKAPI_API_KEY || !XKAPI_BASE_URL || !XKAPI_MODEL) {
  throw new Error('请检查 .env 的三项配置');
}
try {
  const { data } = await axios.post(
    `${XKAPI_BASE_URL.replace(/\/$/, '')}/chat/completions`,
    { model: XKAPI_MODEL, messages: [{ role: 'user', content: '你好' }] },
    { headers: { Authorization: `Bearer ${XKAPI_API_KEY}` }, timeout: 60_000 },
  );
  console.log(data.choices[0].message.content);
} catch (error) {
  // axios 错误对象可能带认证头,不要直接 console.log(error)。
  console.error('请求失败:', error.response?.status ?? error.code ?? '未知');
  process.exitCode = 1;
}
sh
# 加载本地配置并发送一次请求。
node --env-file=.env test_axios.mjs

✅ 本节完成检查点

  • [ ] 已完成本页操作,真实 Key 没有写进代码或提交到 GitHub。

使用 VitePress 构建