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

Переменные и окружения

В .outry переменная — просто имя: customer: user_id, а в строке — ${name}, в пути — {name}; в .http — {{name}}. Значения берутся из api/env.toml, из предыдущих ответов, из командной строки, из переменных окружения и из системного хранилища паролей.

GET /users/{id} {
query { version }
headers { Authorization: "Bearer ${token}" }
}
api/env.toml
default = "dev" # используется, если не указан --env
[vars] # общие для всех окружений
version = "v1"
[env.dev]
base = "http://localhost:8080"
[env.prod]
base = "https://api.example.com"
version = "v2" # перекрывает [vars]
Окно терминала
outry run api # dev
outry run api --env prod # prod
outry envs # список окружений, * — по умолчанию

Все ключи — в справочнике env.toml.

Для переменной Outry берёт первое найденное значение сверху вниз:

# Источник Пример
1 Переопределения из командной строки outry run api --var id=42
2 Значения, сохранённые save save token = body.access_token
3 Переменные окружения процесса OUTRY_<ИМЯ> OUTRY_TOKEN=… outry run api
4 Активное окружение [env.<имя>], затем [vars] base = "http://localhost:8080"
5 Системное хранилище паролей outry secret set token

Имя переменной окружения — OUTRY_ плюс имя переменной в верхнем регистре, где всё, кроме букв и цифр, заменено на _: access-token → OUTRY_ACCESS_TOKEN.

Если каких-то переменных не хватает, запрос не отправляется, а все недостающие имена выводятся сразу:

✗ api/users/get.outry GetUser
undefined variable(s): base, id

В .outry сначала ищутся имена, объявленные в самом запросе: аргументы вызова, params и их значения по умолчанию, потом let файла, потом таблица выше. outry check --env prod перечисляет переменные, которых нет в окружении, ничего не отправляя.

В .outry это функции — uuid(), now(), nowIso(), randomInt(1, 100), randomString(8); см. встроенные функции.

Имена на $ генерируются при каждой подстановке, так что каждый запрос (и каждое вхождение) получает новое значение:

Переменная Значение
{{$uuid}} Случайный UUID v4
{{$timestamp}} Текущее Unix-время в секундах
{{$randomInt}} Случайное целое от 0 до 999
{{$randomInt 1 100}} Случайное целое от min (включительно) до max (не включая)
POST {{base}}/orders
Idempotency-Key: {{$uuid}}
{"amount": {{$randomInt 1 100}}, "created": {{$timestamp}}}

outry vars выводит итоговое значение каждой переменной и её источник; секреты замаскированы:

Окно терминала
outry vars --env prod

В приложении тот же список для выбранного окружения — на вкладке Variables правой панели. См. outry vars.

Значения из save (> save в .http) доступны следующим запросам в этом же запуске и запоминаются между запусками — отдельно для каждого проекта и окружения. Хранятся они вне репозитория, в ~/.local/share/outry/state/ (Linux), потому что чаще всего это токены.

С флагом --fresh сохранённые значения не читаются и не записываются:

Окно терминала
outry run api --fresh

Совсем забыть сохранённые значения можно кнопкой Clear saved на вкладке Variables в приложении.

Ответы запросов с cache: 30m лежат в том же файле, пока не устареют; --fresh и Clear saved их тоже пропускают и забывают.

Outry ищет env.toml или api/env.toml, начиная с запускаемого файла и поднимаясь по родительским папкам до корня репозитория (папки с .git). Папка с env.toml — корень проекта. Указать его явно можно через --project <папка>.