Работа с 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
секундам. Если запрос не успевает выполниться в установленное время, то он прерывается.
Далее перейдем к созданию сценария бота.