Перейти к основному содержимому

Работа с HTTP-запросом

Это часть серии статей, посвященной созданию бота с обращением к API сервиса OpenWeatherMap.

  1. Настройка конфигурационного файла
  2. Работа с HTTP-запросом к OpenWeatherMap API (вы находитесь здесь)
  3. Разработка сценария
  4. Тестирование

На этом шаге мы разберемся, как обратиться к OpenWeatherMap API.

Создайте файл functions.js в папке src.

var OPENWEATHERMAP_API_KEY = $injector.api_key;

function openWeatherMapCurrent(units, lang, q){
return $http.get("http://api.openweathermap.org/data/2.5/weather?APPID=${APPID}&units=${units}&lang=${lang}&q=${q}", {
timeout: 10000,
query:{
APPID: OPENWEATHERMAP_API_KEY,
units: units,
lang: lang,
q: q
}
});
}

Для идентификации пользователя серверу необходимо знать API-ключ. Поэтому введем переменную OPENWEATHERMAP_API_KEY, в которой будет храниться ключ, полученный из chatbot.yaml:

var OPENWEATHERMAP_API_KEY = $injector.api_key;

Теперь выполним HTTP-запрос:

function openWeatherMapCurrent(units, lang, q){
return $http.get("http://api.openweathermap.org/data/2.5/weather?APPID=${APPID}&units=${units}&lang=${lang}&q=${q}", {
timeout: 10000,
query:{
APPID: OPENWEATHERMAP_API_KEY,
units: units,
lang: lang,
q: q
}
});
}

Функция openWeatherMapCurrent принимает шкалу измерения температуры units, язык вывода информации lang и название города q. Она обращается к API-сервису при помощи метода $http.get. В этом методе укажем URL сервера и параметры из query{}, которые мы будем отсылать серверу:

"http://api.openweathermap.org/data/2.5/weather?APPID=${APPID}&units=${units}&lang=${lang}&q=${q}"

Функция openWeatherMapCurrent возвращает объект promise, который содержит ответ API-сервиса в формате JSON.

Установим timeout — время, в течение которого мы готовы ждать ответ от сервера. Таймаут указывается в миллисекундах, поэтому 10000 равно 10 секундам. Если запрос не успевает выполниться в установленное время, то он прерывается.

Далее перейдем к созданию сценария бота.