# Переход с Postman (/ru/docs/tutorials/coming-from-postman)

Echolot читает коллекции и окружения Postman как есть, вместе со скриптами. В этом руководстве вы импортируете
коллекцию, посмотрите, куда попала каждая её часть, запустите её и экспортируете рабочее пространство обратно в
Postman.

- **Время:** 15 минут.
- **Вам понадобится:** коллекция Postman (v2.0 или v2.1) и её окружения, экспортированные в JSON. Нет под рукой
  коллекции? Сделайте её из Alpenglow на шаге 1.
- **Вы узнаете:** про импорт, соответствие частей, доверие к импортированным скриптам, запуск коллекции с импортом и без
  него, а также про экспорт.

## 1. Получите коллекцию [#1-get-a-collection]

В Postman: откройте меню **⋯** коллекции, выберите **Export** и оставьте **Collection v2.1**. Каждое окружение
экспортируйте так же из его собственного меню.

Чтобы потренироваться на Alpenglow:

1. Откройте [рабочее пространство Alpenglow](/docs/tutorials#the-alpenglow-workspace) и выберите **Файл › Экспортировать рабочее пространство…** (<kbd>⇧</kbd><kbd>⌘</kbd><kbd>E</kbd>).
2. Выберите **Postman Collection v2.1**. В её строке сказано, что подходят 21 из 29 запросов: в коллекциях Postman нет
   запросов WebSocket, Socket.IO, MQTT, gRPC и MCP, поэтому они остаются.
3. Оставьте включённым **Включить окружения (3)** и выберите **Экспортировать…**. С окружениями экспорт — это папка файлов:
   назовите её и нажмите **Экспорт**.

В папке лежат `Alpenglow.postman_collection.json` и по одному `.postman_environment.json` на каждое окружение. В
отчёте перечислено, что **Не вошло** и что **Изменено при экспорте**: проверки Echolot стали скриптами `pm.test()`,
захваты из ответов не экспортируются, а секретные переменные уходят только по имени, без значений.

## 2. Импортируйте её [#2-import-it]

1. Создайте новое рабочее пространство: **Файл › Новое рабочее пространство…** (<kbd>⌥</kbd><kbd>⌘</kbd><kbd>N</kbd>)
   с именем `From Postman`.
2. Выберите **Файл › Импортировать…** (<kbd>⇧</kbd><kbd>⌘</kbd><kbd>I</kbd>). Выделите файл коллекции и файлы окружений
   вместе и нажмите **Импортировать**.

   Можно также перетащить файлы на окно или скопировать JSON коллекции и вставить его в боковую панель
   (<kbd>⌘</kbd><kbd>V</kbd>).
3. Отчёт **Импортировано: …** перечисляет каждый файл с его форматом (**Postman collection v2.1**, **Postman environment**) и
   тем, что вошло. Заметки сообщают, что не удалось импортировать как было.

Для экспорта Alpenglow в заметках сказано, что 19 тестовых скриптов импортированы и будут выполняться, когда вы им
доверитесь, и что 2 секретных значения сохранены в Связку ключей, а не в файлы рабочего пространства: демо-пароль и
секрет клиента OAuth, которые были введены в коллекцию. Теперь запросы ссылаются на них как на `{{password}}` и
`{{orders_with_oauth_2_clientSecret}}`. Нажмите **Показать в боковой панели**.

<Shot id="tutorials-postman-import-report" alt="Отчёт об импорте: импортированы коллекция Postman и окружение, с заметками о скриптах и о секретах, сохранённых в Связку ключей" />

## 3. Освойтесь [#3-find-your-way-around]

| В Postman | В Echolot |
| --- | --- |
| Collection | Папка с именем коллекции. Её переменные, авторизация и скрипты находятся в **Настройки папки…** |
| Folder | Папка с описанием в **Документация** и собственными переменными, авторизацией и скриптами |
| Request | Запрос, сохранённый отдельным файлом. Сырые тела сохраняют свой тип; urlencoded становится **URL-encoded**, form-data — **Multipart**; тело GraphQL становится запросом GraphQL |
| Environment | Окружение на странице «Окружения» (<kbd>⌥</kbd><kbd>⌘</kbd><kbd>E</kbd>). Значения типа secret попадают в Связку ключей |
| Collection variables | Переменные папки коллекции. Они действуют на все запросы в ней и главнее переменных окружения |
| Pre-request Script, Tests | Скрипты **Перед запросом** и **Тесты** на вкладке **Скрипты** у запроса, папки или рабочего пространства |
| `pm.*` | Тот же API: `pm.test`, `pm.expect`, `pm.response`, `pm.request`, `pm.environment`, `pm.variables`, `pm.collectionVariables`, `pm.globals`, `pm.iterationData`, `pm.sendRequest`, `pm.cookies`, `pm.setNextRequest`, `pm.visualizer`, а также старые `postman.*` и `tests[…]` |
| `require()` | `lodash`, `ajv`, `tv4`, `crypto-js`, `uuid`, `atob` и `btoa` |
| Auth | Те же типы: Basic, Digest, Bearer-токен, API-ключ, OAuth 1.0, OAuth 2.0 (с расширенными настройками: токен в адресе, URL обновления, дополнительные параметры), AWS Signature, JWT Bearer, Hawk, Akamai EdgeGrid, NTLM. ASAP (Atlassian) становится JWT Bearer с теми же настройками. Учётные данные клиента и пароля OAuth 2.0 остаются как есть; implicit становится кодом авторизации с PKCE, о чём сообщает отчёт об импорте |
| `{{$guid}}`, `{{$timestamp}}`, `{{$randomInt}}`, `{{$randomFirstName}}` и другие значения `$random…` | Динамические значения с теми же именами, включая тестовые данные, и многие другие |
| Collection Runner, Newman | [Прогон](/docs/requests/runner) и [`echolot run`](/docs/cli/run) |
| Mock servers | [Моки](/docs/mocks) на вашем Mac: маршруты с примерами и тестовыми данными или спецификация OpenAPI |
| Monitors | [Сценарии](/docs/flows) по расписанию или `echolot run` в CI |

Тела-файлы и поля-файлы form-data не импортируются, поскольку файл лежит на другом компьютере: отчёт называет каждое
из них, чтобы вы могли выбрать файл заново на вкладке **Тело**.

## 4. Доверьтесь скриптам [#4-trust-the-scripts]

Скрипты могут делать всё, что может скрипт, поэтому импортированные не выполняются, пока вы не скажете.

1. Откройте запрос с тестовым скриптом, например **Catalog › List products**, и его вкладку **Скрипты**. Баннер
   сообщает **Эти скрипты пришли не из Echolot**.
2. Прочитайте скрипт и нажмите **Доверять скриптам**. Если сначала отправить запрос, Echolot спросит, а **Доверять и отправить** доверяет и сразу отправляет.
3. Отправьте. Результаты `pm.test()` скрипта появятся на вкладке **Тесты** ответа в разделе **Скрипты**.

Скрипты работают в собственной песочнице JavaScript Echolot, а не в Node. См. [скрипты и тесты](/docs/requests/scripts-and-tests)
и [API скриптов](/docs/reference/scripting-api).

## 5. Запустите её [#5-run-it]

1. Выберите импортированное окружение в заголовке страницы, например **Staging**, или **Без окружения** для демо-API
   Alpenglow.
2. Щёлкните папку коллекции правой кнопкой и выберите **Запустить папку**. [Прогон](/docs/requests/runner) выполняет
   каждый запрос вместе со скриптами и проверками.

Инструмент командной строки запускает коллекцию без импорта, как Newman. Скрипты там выполняются без вопросов:

```sh
echolot run Alpenglow.postman_collection.json --folder catalog --reporter console --reporter junit --out results.xml
```

`--env-file` принимает файл окружения Postman, `--folder` — имя папки строчными буквами через дефис (`catalog`,
`agent-tools`), а `--data users.csv` запускает один раз на каждую строку. Секретные значения берутся из переменных
окружения `ECHOLOT_SECRET_<NAME>`.

## 6. Что работает по-другому [#6-what-works-differently]

- **Всё — файлы.** Рабочее пространство — это папка файлов TOML, по одному на запрос, готовая для Git. Нет аккаунта и
  службы синхронизации; команды обмениваются через Git. См. [Git и команды](/docs/workspaces/git-and-teams).
- **Сохранение автоматическое.** Нет <kbd>⌘</kbd><kbd>S</kbd>; внизу боковой панели написано **Всё сохранено**.
- **Секреты никогда не попадают в файлы.** Значение секретной переменной живёт в Связке ключей на этом Mac; в файле
  лежит только её имя.
- **Проверки без кода.** Вкладка **Тесты** проверяет статус, заголовки, значения JSON, время, JSON Schema или
  спецификацию OpenAPI без скрипта. См. [скрипты и тесты](/docs/requests/scripts-and-tests).
- **Захваты без кода.** Вместо `pm.environment.set("token", …)` в тестовом скрипте наведите указатель на значение в ответе
  и выберите **Сохранить в переменную…**. См. [Цепочка запросов](/docs/tutorials/chain-requests).
- **Не только HTTP.** В том же рабочем пространстве живут запросы WebSocket, Socket.IO, MQTT, gRPC и MCP,
  спецификации, моки и сценарии.

## 7. Экспортируйте обратно в Postman [#7-export-back-to-postman]

1. Выберите **Файл › Экспортировать рабочее пространство…** или щёлкните папку правой кнопкой и выберите
   **Экспортировать папку…**.
2. Выберите **Postman Collection v2.1**. Лист сообщает, сколько запросов подходит; WebSocket и другие виды сеансов
   остаются. **Insomnia v5** переносит также WebSocket, Socket.IO и gRPC, а **Коллекция Bruno** записывает папку файлов
   `.bru`.
3. Выберите, **Включить окружения** ли, затем **Экспортировать…**.

Учётные данные, введённые в поля авторизации или заголовков, записываются открытым текстом, и отчёт сообщает, сколько их:
сначала перенесите их в секретные переменные. Секретные переменные уходят по имени, без значений. См.
[экспорт](/docs/workspaces/exporting).

## Дальше [#next-steps]

- [Ваше первое рабочее пространство](/docs/tutorials/first-workspace): как устроено рабочее пространство.
- [Импорт](/docs/get-started/importing): также Insomnia, OpenAPI, HAR, cURL, Paw и Bruno.
- [Тестирование API и запуск в CI](/docs/tutorials/test-in-ci): замените Newman в своём конвейере.
