Переменные и окружения
В .outry переменная — просто имя: customer: user_id, а в строке — ${name}, в пути — {name}; в
.http — {{name}}. Значения берутся из api/env.toml, из предыдущих ответов, из командной строки, из
переменных окружения и из системного хранилища паролей.
GET /users/{id} { query { version } headers { Authorization: "Bearer ${token}" }}Окружения
Заголовок раздела «Окружения»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 # devoutry run api --env prod # prodoutry 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); см.
встроенные функции.
Динамические переменные в .http
Заголовок раздела «Динамические переменные в .http»Имена на $ генерируются при каждой подстановке, так что каждый запрос (и каждое вхождение) получает
новое значение:
| Переменная | Значение |
|---|---|
{{$uuid}} |
Случайный UUID v4 |
{{$timestamp}} |
Текущее Unix-время в секундах |
{{$randomInt}} |
Случайное целое от 0 до 999 |
{{$randomInt 1 100}} |
Случайное целое от min (включительно) до max (не включая) |
POST {{base}}/ordersIdempotency-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 <папка>.