Работа с HTTP-запросом
Это часть серии статей, посвященной созданию бота с обращением к API сервиса OpenWeatherMap.
- Настройка конфигурационного файла
- Работа с HTTP-запросом к OpenWeatherMap API (вы находитесь здесь)
- Разработка сценария
- Тестирование
На этом шаге мы разберемся, как обратиться к 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 секундам. Если запрос не успевает выполниться в установленное время, то он прерывается.
Далее перейдем к созданию сценария бота.