node.js - RapidApi 看不到密钥头有什么问题?
问题描述
所以我在我的 Angular Node.js 应用程序中有这个方法:
async translateWord(word: string) {
const key = '*I put it here*';
const translation = await axios({
"method": "POST",
"url": "https://google-translate1.p.rapidapi.com/language/translate/v2",
"headers": {
"content-type": "application/octet-stream",
"x-rapidapi-host": "google-translate1.p.rapidapi.com",
"x-rapidapi-key": key,
"useQueryString":true
},
"data": {
"source": "en",
"q": word,
"target": "ru"
}
});
console.log(translation.data);
}
调用方法的结果是
发布https://google-translate1.p.rapidapi.com/language/translate/v2 502(错误网关)
当我在 Chrome 开发工具窗口中右键单击失败的请求并在新选项卡中打开它时,我收到以下消息:
{"message":"缺少 RapidAPI 应用程序密钥。请访问 https://docs.rapidapi.com/docs/keys 了解如何获取您的 API 应用程序密钥。"}
奇怪的是,我的标题中实际上有密钥:证明
当我通过 RapidApi 接口执行相同的代码片段时,我也得到了正确的翻译。
解决方案
RapidAPI 支持通过查询参数传递 API 密钥。您可以通过在链接中包含以下语法来做到这一点:
https://example.p.rapidapi.com/?rapidapi-key=***************************
但是,请记住,您的 RapidAPI 密钥会在您的整个帐户中使用。如果链接可公开访问,请小心暴露您的密钥。
推荐阅读
- sql-server-2008 - 使用 CDC 表创建与前一个日期相同的数据库状态
- c++ - 如果可能,优化总是将函数参数设置为常量链接更好吗?
- node.js - 将 Html 表单呈现为 pdf
- javascript - 当大括号从下一行开始时,对象文字表达式没有被解析
- r - 为 system() 使用变量输入
- python - 将参数传递给组合函数的最内层调用
- sql - 如何将一个表中的几列插入到另一个只有 1 列唯一/不同的列?
- firebase - 从firebase客户端sdk获取user_pseudo_id?
- java - 在 Java 中创建 WebSocket 服务器
- c# - 当表单中引用的类的属性发生更改时,如何调用表单中的方法?