#javascript #android #ios #react-native #axios
#javascript #Android #iOS #react-native #axios
Вопрос:
Я вызываю запрос GET из OpenWeather API, как показано ниже:
const config = {
headers: {
accept: 'application/json',
},
data: {},
};
const url = 'http://samples.openweathermap.org/data/2.5/forecast?id=524901amp;appid=b6907d289e10d714a6e88b30761fae22';
Axios.get(url, config).then((response) => {
console.log(response);
}).catch((e) => {
Alert.alert('error', `${e}`);
});
но .then()
не вызывается, и примерно через 15 секунд он выдает исключение и показывает catch
предупреждение (сообщающее, Network Error
что в то время как другие вызовы API работают, сетевая ошибка на самом деле не проблема).
url работает в браузерах, но Axios не может выполнить этот вызов. у кого-нибудь есть идеи, что происходит?
Ответ №1:
Убедитесь, что ваш пакет NPM находится вверху:
Для Node / React:
const axios = require('axios');
import axios from 'axios';
Предоставленный вами код сработал для меня. Я просто установил axios, импортировал его и записал в нижнем регистре «axios» в вашем примере, и я получил ответ от службы погоды.
Я получил следующий ответ на данные JSON (с некоторыми другими материалами):
data:
{ cod: '200',
message: 0.0036,
cnt: 40,
list:
[ [Object],
...
[Object],
[Object] ],
city:
{ id: 524901, name: 'Moscow', coord: [Object], country: 'none' } } }
Ответ №2:
Используйте async/await
. Это упрощает чтение вашего кода и позволяет избежать ада обратного вызова.
import axios from 'axios';
const fetchData = async () => {
const config = {
headers: {
accept: 'application/json',
},
data: {},
};
const url = 'http://samples.openweathermap.org/data/2.5/forecast?id=524901amp;appid=b6907d289e10d714a6e88b30761fae22';
const response = await axios.get(url, config);
console.log(response);
}