javascript - openweathermap api 无效的 api 密钥错误 [error401]
问题描述
我在处理 openweathermap api 时遇到问题,该 api 调用在浏览器中运行良好,但是在项目中使用它时,我得到 error401,在这里引用如下:
我没有其中列出的任何问题
还有这里的链接:http ://api.openweathermap.org/data/2.5/weather?zip=10001,us&appid=####
在浏览器中完美运行
这是我的 app.js:
/* Global Variables */
let baseURL = 'http://api.openweathermap.org/data/2.5/weather?zip=';
let apiKey = ',us&appid=####';
// Create a new date instance dynamically with JS
let d = new Date();
let newDate = d.getMonth()+'.'+ d.getDate()+'.'+ d.getFullYear();
document.getElementById('generate').addEventListener('click', performAction);
function performAction(e){
const temperature = document.getElementById('zip').value;
const userResponse = document.getElementById('feelings').value;
console.log(baseURL+temperature+apiKey)
const getTemp = async (baseURL,temperature,apiKey)=>{
const res = await fetch(baseURL+temperature+apiKey)
try {
const data=await res.json();
return data;
} catch(error) {
console.log("error", error);
// appropriately handle the error
}
}
getTemp(baseURL+temperature+apiKey).then( res =>{ console.log(res);
postData('/add', {temperature: temperature, date: newDate, userResponse: userResponse});
updateUI('/all');})
解决方案
getTemp
问题
是给出的第一个参数getTemp
是完整的 url(但该函数为 fetch url 组合了 3 个参数)
,因此这些值中的 2 个将是未定义的,并且 fetch 最终将作为(baseURL+temperature+apiKey)+undefined+undefined
而不是baseURL+temperature+apiKey
解决方案是在调用getTemp
时使用逗号,以便它们在函数中填充适当的参数位置
/* Global Variables */
let baseURL = 'http://api.openweathermap.org/data/2.5/weather?zip=';
let apiKey = ',us&appid=####';
// Create a new date instance dynamically with JS
let d = new Date();
let newDate = d.getMonth()+'.'+ d.getDate()+'.'+ d.getFullYear();
document.getElementById('generate').addEventListener('click', performAction);
function performAction(e){
const temperature = document.getElementById('zip').value;
const userResponse = document.getElementById('feelings').value;
console.log(baseURL+temperature+apiKey)
const getTemp = async (baseURL,temperature,apiKey)=>{
const res = await fetch(baseURL+temperature+apiKey)
try {
const data=await res.json();
return data;
} catch(error) {
console.log("error", error);
// appropriately handle the error
}
}
getTemp(baseURL,temperature,apiKey).then( res =>{ console.log(res);
postData('/add', {temperature: temperature, date: newDate, userResponse: userResponse});
updateUI('/all');})
推荐阅读
- c# - 是否可以为 dotnet core 运行时安装 DotNet core CLI?
- unix - 如何在 unix 上不输入数百万次密码?
- html - MDBootstrap Angular Material Animation 不适用于输入字段
- php - Wordpress & MDPF 包含外部 php 文件模板
- c++ - 是否可以通过使用其他变量来为变量分配值而不更改它们在 C++ 中的值。?
- c# - 无法在 C# 中终止进程?
- javascript - 从具有正确后备路由结构的nodejs中的异步调用传递数据的最佳实践
- c++ - 为什么我的双向链表删除功能会删除多个节点?
- mongodb - MongoDB聚合:查找数组子对象
- excel - 如何使存储在字典键过滤器中的数据不区分大小写