Задать вопрос
@jKEeY

Взаимодействие React и сторонним API?

Добрый день!
Пишу Weather App на React.В качествен Weather API взял OWM, столкнулся с такой проблемой, что React не правильно обрабатывает запрос
onChangeWeather(){
		fetch(`api.openweathermap.org/data/2.5/forecast/?q=${this.state.value}&cnt=1&APPID=e94f24c463ec7a0d1a69ebdebc88c694&lang=ru`)
			.then( (result) => {
				console.log(result);
			})
	}

При нажатии на кнопку срабатывает этот код ^
В попытке вывести результат выходит это 5afec11572559959004919.png
Либо я не правильно обрабатываю данные, либо что-то другое
Я в React новичок и не могли бы вы подсказать как можно сделать взаимодействие стороннего API с React
  • Вопрос задан
  • 264 просмотра
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 3
rockon404
@rockon404
Frontend Developer
1. Вы не указали протокол(http в вашем случае). Поэтому ответ получаете не от API OWM, а от своего localhost:3000. Если бы вы внимательно посмотрели на свойство url в консоли, на вкладке network или хотя бы на своем скриншоте, вы бы это заметили.
2. Ответ надо парсить методом res.json(). Но без указания протокола это бесполезно. Так как ваш localhost:3000 судя по статусу 200 возвращает html с приложением. Отсюда ошибка:
SyntaxError: Unexpected token < in JSON at position 0

которую, как я вижу по обсуждению в комментариях, вы получаете, когда пытаетесь парсить ответ.

Исправленный вариант:
fetch(`http://api.openweathermap.org/data/2.5/forecast/?q=${this.state.value}&cnt=1&APPID=e94f24c463ec7a0d1a69ebdebc88c694&lang=ru`)
      .then(res => res.json())
      .then(json => console.log(json));
Ответ написан
Комментировать
miraage
@miraage
Старый прогер
Причем тут React, если Вы некорректно Fetch API используете?
RTFM.
Ответ написан
Комментировать
msdos-x86
@msdos-x86
самоучка
иногда надоедает каждый раз делать res.json(), попробуй установить axios, там и возможностей побольше и не придется вручную в json форматировать
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы