#javascript #openweathermap
#javascript #открытая карта погоды
Вопрос:
Я столкнулся с проблемой, связанной с api openweathermap, вызов api отлично работает в браузере, но при использовании его в проекте я получаю ошибку 401, которая упоминается здесь следующим образом:
У меня нет ни одной из перечисленных в нем проблем
также вот ссылка: http://api.openweathermap.org/data/2.5/weather?zip= 10001,usamp;appid=####
отлично работает в браузере
и вот мой app.js:
/* Global Variables */
let baseURL = 'http://api.openweathermap.org/data/2.5/weather?zip=';
let apiKey = ',usamp;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');})
когда я console.log() URL-адрес, он работает отлично, но ошибка появляется в запросе get:
Комментарии:
1. Скажи мне, что ты не поделился своим секретным ключом.
2. не уверен, что вы имеете в виду, но если лимит превышен, мы получаем еще одну ошибку
3. @emix мы получаем ошибку 429
4. хорошо .. в основном то, что он говорит … ключ api, который вам дали, — это не то, что вы должны здесь выставить .. Я ПРЕДЛАГАЮ Вам ИЗМЕНИТЬ ЭТО, потому что не у всех такие сердца, как у нас
Ответ №1:
getTemp
является ли проблема
, для которой первым аргументом getTemp
является полный URL-адрес (однако функция объединяет 3 аргумента для URL-адреса выборки)
, поэтому 2 из этих значений будут неопределенными, и выборка закончится как (baseURL temperature apiKey) undefined undefined
вместо baseURL temperature apiKey
Решение заключается в том, чтобы при вызове getTemp
использовать запятые, чтобы они заполняли соответствующие места аргументов в функции
/* Global Variables */
let baseURL = 'http://api.openweathermap.org/data/2.5/weather?zip=';
let apiKey = ',usamp;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');})
Комментарии:
1. Я увидел неопределенный неопределенный и не мог понять причину, теперь это работает, большое вам спасибо!
2. @TheBombSquad пожалуйста, удалите ключ api
3. Я не задавал вопрос @TheBombSquad
4. @TheBombSquad Я не думаю, что это так очевидно