Мок-серверы

Мок-сервер для API за минуту — прямо из перехваченного трафика

Поднимите поддельный API на своём порту: ручки с кодом, заголовками, телом и задержкой, HTTP и HTTPS на одном порту. Работайте, пока бэкенда ещё нет, и держите стабильные ответы для демонстраций и автотестов.

Раздел мок-серверов Microkoi: список серверов с портами, ручки выбранного сервера по папкам и журнал последних обращений.

От трафика до мок-сервера

  1. 1

    Перехватите трафик

    Поработайте с приложением через прокси — дерево узлов соберёт все адреса, к которым оно обращается.

  2. 2

    Создайте сервер из ветки

    Кнопка «Создать мок-сервер из ветки» превращает каждое сочетание метода и пути в ручку с последним перехваченным ответом.

  3. 3

    Запустите и подключите

    Сервер поднимается на свободном порту начиная с 9091. Укажите его адрес в приложении вместо настоящего API.

Настоящий API, только ваш

Всё, чтобы клиент не ждал бэкенд, а демонстрация не зависела от тестового стенда.

  • Несколько серверов сразу

    Каждый поддельный сервис на своём порту и со своими ручками: платёжный шлюз на 9091, профиль на 9092.

  • HTTP и HTTPS на одном порту

    Сервер сам различает протокол. Сертификат выпускается корневым сертификатом Microkoi — для localhost, адресов в сети и эмуляторов Android.

  • Ручки — файлы в git

    Сервер — папка, ручка — файл, тело — настоящий JSON или изображение рядом. Большие ответы дают построчный diff.

  • Журнал обращений

    Время, метод, путь, код, сработавшая ручка и адрес клиента. Для запроса без ручки — кнопка «Создать ручку».

  • Доступ с телефона

    Переключатель «Доступ из локальной сети» открывает сервер для телефона, эмулятора и другого компьютера.

  • Любые файлы в ответе

    Изображения, PDF и архивы отдаются как есть, потоком с диска, в том числе как файл для скачивания.

Как это устроено

Ручки с масками и приоритетом

Ручка задаётся методом или «любым» и путём с масками * и **. Если подходят несколько, отвечает самая точная — по тем же правилам, что у моков. На запрос без ручки сервер отвечает 404 с понятным JSON, чтобы сразу было видно, чего не хватает.

  • Папки нужны только для порядка: адрес ручки задаётся её путём
  • Ручки и папки переносятся перетаскиванием, папку можно включить или выключить целиком
  • Работающий сервер подхватывает изменения ручек без перезапуска
  • Копия сервера получает свободный порт и собственные копии всех тел

Сервер из ветки трафика

Кнопка у узла или ветки пути в дереве трафика создаёт сервер с ручкой на каждое сочетание метода и пути — с последним перехваченным кодом, заголовками и телом. Ручки раскладываются по папкам сегментов пути, а тела — в файлы с расширением по типу, так что изображения тоже переносятся.

  • Служебные заголовки длины, сжатия и соединения не переносятся
  • Если ответ был сохранён не полностью или его не было, приложение предупредит

CORS для локальной разработки

Веб-приложение из разработки может обращаться к серверу сразу: запросы с localhost, *.local и адресов частных сетей получают разрешение CORS автоматически. Сайты из интернета его не получают — иначе любая открытая в браузере страница прочитала бы ответы сервера.

  • Заголовок Access-Control-*, заданный в ручке, заменяет автоматический

Порты и запуск

Порт выбирается автоматически и проверяется на совпадение с другими серверами пространства и с прокси. Если сервер не запустился — например, порт занят другой программой, — причина видна прямо в списке, а рядом кнопка «Повторить».

  • Запущенные серверы поднимаются снова при следующем открытии пространства
  • У коллеги, открывшего пространство из репозитория, серверы сами не запустятся и не откроются в сеть
  • При переключении пространства серверы прежнего останавливаются

Всё хранится в папке проекта

Сервер хранится так же, как коллекции запросов: папка сервера с файлом server.json, ручки — файлами в папках, тело каждой ручки — файлом рядом. Правки после git pull или изменения тела в редакторе кода подхватываются сразу.

Вопросы и ответы

Чем мок-сервер отличается от мока?

Мок подменяет ответ в прокси: приложение обращается к настоящему адресу, а отвечает Microkoi. Мок-сервер — отдельный API на своём порту: приложение обращается к нему напрямую, как к бэкенду. Моки и мок-серверы не пересекаются.

Можно ли обращаться к мок-серверу по HTTPS?

Да, на том же порту, что и по HTTP: сервер сам различает протокол. Устройство должно доверять корневому сертификату Microkoi — на компьютере он ставится кнопкой на экране трафика, на телефоне — через настройку устройства.

Как подключиться к мок-серверу с телефона или эмулятора?

Включите «Доступ из локальной сети» и используйте адрес компьютера в сети — он показан рядом с сервером. Эмулятор Android обращается к компьютеру по адресу 10.0.2.2.

Можно ли оставлять в ручках данные из трафика?

Пока сервер запущен, его ответы может прочитать любая программа на этом компьютере и страница, открытая с локального адреса. Поэтому настоящие токены и персональные данные в ручках лучше заменить.

Попробуйте на своём проекте

Бета-версия бесплатна и не требует регистрации. Скачайте, выберите папку проекта и запустите прокси — через пару минут в списке появятся первые запросы.

Версия 0.9.0 · macOS, Windows и Linux · без регистрации