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

$http.config

Метод задает настройки HTTP-клиента по умолчанию.

подсказка

Если вы часто делаете запросы к одному внешнему ресурсу или с одинаковыми настройками, используйте этот метод, чтобы не повторять их при каждом вызове $http.query. Также метод позволяет включить кэширование HTTP-ответов.

Синтаксис

Метод принимает в качестве аргумента объект со следующими полями:

ПолеТипОписание
urlОбъектПараметры базового URL. Обязательно указать все вложенные поля: protocol, host и port.
подсказка
После настройки базового URL вы можете использовать в вызовах метода $http.query относительные URL-адреса.
url.protocolСтрокаПротокол базового URL. Возможные значения: http и https.
url.hostСтрокаХост базового URL.
url.portЧислоПорт базового URL. Для протокола HTTP обычно это порт 80, для HTTPS — 443.
timeoutЧислоМаксимальное время выполнения запроса в миллисекундах. Предельное значение — 25000.
authHeaderСтрокаЗначение заголовка Authorization, который будет передаваться с каждым запросом.
cacheTimeToLiveInSecondsЧислоВремя в секундах, на которое будут кэшироваться успешные HTTP-ответы на запросы с параметром cachingRequired.
предупреждение
Если в сценарии нет вызова $http.config с этим полем, никакие запросы не будут кэшироваться.
oauth2ResourceDetailОбъектНастройки авторизации OAuth 2.0.
$http.config({
url: {
protocol: "https",
host: "example.com",
port: 443
},
timeout: 10000,
authHeader: "Bearer " + $secrets.get("EXAMPLE_COM_BEARER_TOKEN"),
cacheTimeToLiveInSeconds: 3600
})

Пример использования

В следующем примере в качестве базового URL задается URL сервиса OpenWeather и включается кэширование HTTP-ответов на 10 минут. Это позволяет уменьшить расход квоты при повторных запросах погоды для одного и того же города.

Где задавать настройки по умолчанию

Чаще всего $http.config вызывается в стартовом стейте, в который бот попадает в начале диалога с пользователем, либо внутри тега init.

require: city/city.sc
module = sys.zb-common

init:
$http.config({
url: {
protocol: "https",
host: "api.openweathermap.org",
port: 443
},
cacheTimeToLiveInSeconds: 600
});

theme: /

state: CurrentWeather
q!: * сколько [сейчас] градус* [в] $City *
script:
$temp.response = $http.query("/data/2.5/weather?lat=${lat}&lon=${lon}&appid=${appid}&units=${units}", {
query: {
lat: $parseTree._City.lat,
lon: $parseTree._City.lon,
appid: $secrets.get("OPENWEATHER_API_KEY"),
units: "metric"
},
cachingRequired: true
});
if: $temp.response.isOk
a: Сейчас в городе {{$parseTree._City.name}} {{Math.floor($temp.response.data.main.temp)}} °C.
else:
a: У меня не получилось узнать погоду. Попробуйте ещё раз.