Mock-серверы в PolyApiIDE: подмена ответа без реального бэкенда

PPolyApiIDE · Опубликовано 20 окт 2026 · 3 мин

Я делаю PolyApiIDE, и один из вопросов, который задают регулярно: «а можно подставить свой ответ вместо реального бэкенда?». Можно — это платная функция (планы Month, Year, Lifetime), называется mock-серверы. Ниже — как это устроено на самом деле, без преувеличений насчёт того, что именно подменяется.

Что это такое

Mock-сервер в PolyApiIDE — это правило: метод (GET, POST и так далее) плюс паттерн URL. Когда реальный запрос из вкладки совпадает с правилом, расширение перехватывает его через собственный механизм блокировки/редиректа запросов в браузере и возвращает тело ответа и content-type, которые вы задали в правиле, — вместо того чтобы отправлять запрос на настоящий backend.

Важный момент: это целиком локальный механизм. Перехват происходит в браузере, ни один байт мок-трафика не уходит на какой-либо наш сервер — правило просто подставляет готовый ответ вместо реального запроса на вашей машине.

Приоритет: Collection > Workspace > Global

Правило можно задать на одном из трёх уровней, и при совпадении нескольких правил побеждает самое специфичное:

УровеньГде действуетПриоритет
Collectionтолько запросы внутри конкретной коллекциивысший — переопределяет всё остальное
Workspace (пространство)все запросы в этом пространствесредний
Globalвсе запросы во всех пространствах IDEнизший — работает как база/заглушка по умолчанию

Пример: вы ставите глобальное правило-заглушку GET /api/*, которое возвращает пустой список, чтобы вкладка не падала без сети, когда backend недоступен вообще. Но в одной конкретной коллекции, где вы сейчас разрабатываете фичу профиля пользователя, добавляете более узкое правило GET /api/users/* с реалистичной тестовой фикстурой. Для запросов из этой коллекции сработает правило коллекции, для всех остальных — глобальная заглушка.

Что подменяется сегодня, а что нет

Здесь важно быть честным: на сегодня платформа подменяет только тело ответа и content-type. Статус-код, заголовки ответа и искусственная задержка перед ответом технически не поддерживаются. Если вам нужно замокать именно 500-ю ошибку с нужным статусом или проверить, как клиент реагирует на медленный ответ с задержкой, — этого сейчас сделать нельзя. Мы работаем с тем, что уже реализовано, и не будем делать вид, что это полноценная платформа контрактного тестирования уровня WireMock или Prism. Это легковесная подстановка тела и типа контента, которая закрывает самый частый случай, но не заменяет полноценный мок-сервер.

Когда это реально пригождается

  • Backend для нужного эндпоинта ещё не готов (или вы, как фронтендер, обгоняете команду backend) — вы работаете по заранее согласованному контракту, не дожидаясь релиза.
  • Нужно показать демо без живого backend — например, в самолёте или в сети без доступа к стейджингу.
  • Вы хотите работать полностью офлайн, не завязываясь на доступность внешнего сервиса.
  • Вы тестируете скрипты (pm/poly) или QA-проверки на детерминированном фиксированном ответе, не зависящем от того, насколько сейчас «моргает» реальный нестабильный backend.

Как это настраивается на практике

Концептуально это три шага: выбрать уровень (коллекция, пространство или глобально), добавить правило — метод плюс паттерн URL — и указать тело ответа и content-type, которые должны вернуться. После включения правила обычный запрос из вкладки, который совпадает с паттерном, получает подставленный ответ сразу, без обращения к реальному адресу. Остальной рабочий процесс — скрипты, QA-проверки, сценарии — работает с этим ответом так же, как с настоящим.

Если вы ещё не настраивали PolyApiIDE — начните с быстрого старта. Вопросы по лицензиям, планам и границам платных функций — в FAQ.

Автор делает PolyApiIDE. В текстах это сказано прямо, а не в подвале мелким шрифтом.