德他数据 / API 教程

JavaScript HTTP 接入示例

使用 Node.js 服务端 fetch 接入德他文本 API,说明环境变量、超时控制、错误读取和避免前端泄露密钥。

作者:德他数据技术团队 · 更新于 2026-09-24

核心解答

在 Node.js 服务端读取环境变量并使用 fetch,设置输出上限和 stream:false。API Key 不进入浏览器包;AbortSignal 只终止本地等待,不代表上游生成已取消,应核验未知结果。

运行条件

在支持 fetch 的 Node.js 服务端运行。设置 DETA_API_KEY、DETA_MODEL,按需设置 DETA_BASE_URL。

不要把代码粘贴到网页开发者控制台,不要打包进前端。

请求代码

const base = (process.env.DETA_BASE_URL || 'https://www.data123.com.cn').replace(/\/$/, '');
const key = process.env.DETA_API_KEY;
const model = process.env.DETA_MODEL;
if (!key || !model) throw new Error('请先设置密钥和已核准模型');
try {
  const response = await fetch(base + '/v1/chat/completions', {
    method: 'POST',
    headers: { Authorization: 'Bearer ' + key, 'Content-Type': 'application/json' },
    body: JSON.stringify({
      model, messages: [{ role: 'user', content: '用一句话介绍你的作用。' }],
      max_tokens: 64, stream: false
    }),
    signal: AbortSignal.timeout(120000)
  });
  const result = await response.json();
  if (!response.ok) {
    console.error(response.status, result.error?.type,
      response.headers.get('X-Deta-Request-ID'));
  } else {
    console.log(result.choices?.[0]?.message?.content);
  }
} catch {
  console.error('结果未确认,请先检查调用与账务记录,不自动重试。');
}

生产接入

示例不会自动重试,也不会代替业务自己的日志脱敏、访问控制或费用上限设计。真实请求可能产生费用。

常见问题

能直接放在前端网页里吗?

不能把带真实密钥的示例放到公开前端。应由自己的后端鉴权后调用,并对用户请求实施访问与预算限制。

接下来阅读

接口开放范围 · 错误码排查 · 密钥安全与上线检查