请求协助:将Yandex Translate API v2接入Node.js环境
Yandex Translate API v2 Node.js 接入修复方案
你的Node.js代码存在三处关键问题导致无法正常运行,下面逐一说明并给出修复后的代码:
问题点说明
- Authorization 头未正确注入令牌:原代码中
"Bearer (IAM_TOKEN)"是固定字符串,没有将变量IAM_TOKEN的实际值插入,需用ES6模板字符串完成变量替换。 - Axios 请求参数结构错误:axios.post的第三个参数必须是配置对象,headers需要嵌套在该对象的
headers字段下,不能直接传入headers对象。 - 异步请求未处理:axios.post返回Promise对象,直接打印
response.text无法获取实际响应内容,需通过异步语法处理结果。
修复后的代码(两种写法可选)
写法1:使用 .then() 处理异步
const axios = require("axios"); const IAM_TOKEN = "XXXXXXXX"; const folder_id = "XXXXXXX"; const target_language = "ru"; const texts = ["Hello"]; const requestBody = { targetLanguageCode: target_language, texts: texts, folderId: folder_id, }; const headers = { "Content-Type": "application/json", Authorization: `Bearer ${IAM_TOKEN}` // 修复变量替换逻辑 }; // 修复axios参数结构,并用.then()处理响应 axios.post( "https://translate.api.cloud.yandex.net/translate/v2/translate", requestBody, { headers } // 将headers嵌套到配置对象中 ) .then(response => { console.log(response.data); // axios响应数据存放在data字段中 }) .catch(error => { console.error("请求失败:", error.response?.data || error.message); });
写法2:使用 async/await 处理异步
const axios = require("axios"); const translateText = async () => { const IAM_TOKEN = "XXXXXXXX"; const folder_id = "XXXXXXX"; const target_language = "ru"; const texts = ["Hello"]; const requestBody = { targetLanguageCode: target_language, texts: texts, folderId: folder_id, }; const headers = { "Content-Type": "application/json", Authorization: `Bearer ${IAM_TOKEN}` }; try { const response = await axios.post( "https://translate.api.cloud.yandex.net/translate/v2/translate", requestBody, { headers } ); console.log(response.data); } catch (error) { console.error("请求失败:", error.response?.data || error.message); } }; // 调用异步函数 translateText();
额外细节说明
axios的响应内容默认存放在response.data中,而非原代码中的response.text,这也是导致无法获取正确结果的细节问题。添加错误捕获逻辑后,能更方便排查令牌过期、目录ID错误等问题。
内容的提问来源于stack exchange,提问作者LOCALSHOT
相关产品推荐
相关产品推荐

