Одной из замечательных особенностей Postman является возможность запуска коллекции Postman в качестве вызываемого макетного сервера с помощью нескольких простых щелчков мыши.
Макет-серверы Postman обеспечивают два основных преимущества:
Устранение зависимостей
Кодирование с использованием mock-серверов устраняет зависимость от доступности нижележащих API. Вместо этого разработчики могут создать конфигурацию серверов-макетов, указать примеры, которые они хотят получить в ответ, и реализовать свой код для обработки этих сценариев использования.
Аналогичным образом, тестировщики API разблокированы, поскольку они могут писать и проверять свои тесты API на макетных серверах и переходить к использованию реальных конечных точек только после того, как разработчики развернут стабильный (пригодный для тестирования) код.
Совместная работа над ожидаемым состоянием
Макетные серверы — это отличный способ для совместной работы команд над ожидаемыми входами и выходами API.
Нет ничего лучше, чем нажать на конечную точку и увидеть, что именно она вернет. Это переходит на новый уровень, когда разработчики, тестировщики и потребители API получают доступ к одному и тому же макетному серверу. Все видят одно и то же ожидаемое состояние, и у всех есть общая цель.
В целом, это отличные возможности, которые должны быть частью жизненного цикла любой современной разработки.
- Так в чем же тогда проблема?
- Postman Local Mock Server
- Начало работы
- Как мне выбрать ответ, который я хочу получить?
- Postman поддерживает динамические данные ответа в макетах, так ли это?
- Что насчет коллекции, окружения и глобальных переменных?
- Выполняет ли она предварительные запросы и тестовые скрипты?
- Отзывы/комментарии/вопросы
Так в чем же тогда проблема?
Одна из проблем заключается в том, что даже после устранения зависимости от нижестоящего поставщика API вы все равно остаетесь в зависимости от прихоти Postman.
Макетные серверы Postman работают в облаке Postman (AWS), поэтому если вы работаете в среде, где доступ к внешнему интернету затруднен, или вам просто нужно запустить свои макетные серверы ближе к клиентскому коду, Postman Local Mock Server — это решение.
Postman Local Mock Server
Это простой пакет javascript, который вы можете импортировать в свою кодовую базу для запуска коллекции в качестве локального сервера.
Выберите порт, на котором он будет работать, предоставьте JSON-файл коллекции, и пакет postman-local-mock-server запустит ее для вас.
Начало работы
Шаг 1
Создайте коллекцию из Postman (или выберите коллекцию из Public API Network).
Единственным требованием здесь является то, что для каждого запроса в вашей коллекции вы должны указать хотя бы один пример ответа с правильным кодом состояния.
Макетный сервер будет использовать комбинацию путей и заголовков, чтобы определить, какой пример ответа лучше всего вернуть, но вы также можете контролировать это с помощью некоторых параметров.
Шаг 2
Создайте новый проект Javascript
mkdir local-collection && cd local-collection
npm init -y
Шаг 3
Установите зависимость из npm
npm i @jordanwalsh23/postman-local-mock-server
Шаг 4
Отредактируйте файл index.js, чтобы запустить вашу коллекцию
const PostmanLocalMockServer = require('@jordanwalsh23/postman-local-mock-server');
//Create the collection object.
let collection = JSON.parse(fs.readFileSync('./my-collection.json', 'utf8'));
//Create a new server
let server = new PostmanLocalMockServer(3555, collection);
//Start the server
server.start();
Шаг 5
Запустите сервер, запустив скрипт.
node index.js
Шаг 6
Отправьте несколько запросов
Вы можете использовать любой API-клиент (даже #postman) или код вашего приложения, чтобы обратиться к конечным точкам на http://localhost:3555.
Сервер автоматически ответит вам теми насмешливыми примерами, которые вы создали в своей коллекции.
Как мне выбрать ответ, который я хочу получить?
Существует 4 необязательных заголовка, которые вы можете указать в запросах к локальному mock-серверу, чтобы заставить его отвечать так, как вы хотите.
x-mock-response-name — Отправьте этот заголовок с именем конкретного ответа, который вы хотите получить.
x-mock-response-code — Отправьте этот параметр с кодом состояния, который вы хотите получить от API. Если существует подходящий пример с таким кодом состояния, он будет возвращен.
x-mock-response-id — Отправьте это значение с ID конкретного примера ответа, который вы хотите вернуть. Этот идентификатор является внутренним идентификатором Postman, поэтому вам нужно посмотреть коллекцию или использовать API Postman, чтобы узнать его.
x-mock-match-request-body — (булево, по умолчанию: false) Если вы используете запросы POST/PUT/PATCH, которые имеют тело, вы можете использовать следующий заголовок, чтобы заставить локальный макет-сервер Postman соответствовать телу одного из ваших примеров ответов.
Postman поддерживает динамические данные ответа в макетах, так ли это?
Да! Если вы используете некоторые поля библиотеки faker, которые поддерживает Postman, они также будут разрешены в локальном макетном сервере Postman.
Что насчет коллекции, окружения и глобальных переменных?
В настоящее время библиотека не поддерживает переменные. Возможно, в будущем релизе, если это будет необходимо.
Выполняет ли она предварительные запросы и тестовые скрипты?
Нет. К сожалению, пока нет. Если это необходимо, пожалуйста, поднимите вопрос в репозитории.
Отзывы/комментарии/вопросы
Пожалуйста, не стесняйтесь создать проблему в репозитории, если у вас есть какие-либо замечания.
Спасибо!