Замокать REST API эндпоинт

Публичный JSON-эндпоинт, чтобы разблокировать фронт, пока нет бэка.

Мок REST-эндпоинта — это публичный URL, который отдаёт заданный вами JSON, и никакого своего сервера за ним нет. Вы один раз описываете метод, статус и тело ответа, и мок отвечает ровно этим на каждый вызов. Это самый быстрый способ разблокировать фронтенд, пока настоящий бэкенд ещё пишется: создание мока и первый вызов заняли в медиане 0,73 секунды на 20 прогонах с европейского клиента, замер 2026-09-08.

Какой JSON должен отдавать мок?

Отдавайте тот ответ, который на самом деле ждёт ваш интерфейс, а не упрощённую замену. Смысл мока в том, что вы пишете против него настоящий код разбора, поэтому форма обязана совпадать с контрактом, о котором вы договорились с бэкендом.

  • Сохраняйте обёртку. Если реальный API заворачивает результат в {"data": [...], "total": 42}, мокайте обёртку тоже. Код, написанный под голый массив, сломается в день появления настоящего эндпоинта.
  • Сохраняйте типы. Если в проде id — строка, здесь он тоже строка. Незаметный дрейф числа в строку — самая частая причина мока, который работает, и живого вызова, который нет.
  • Кладите неудобные поля. Null, пустые массивы и необязательные ключи — именно то, на чём ошибается код отрисовки, так что положите в фикстуру хотя бы по одному такому.

Как замокать ошибки и CORS?

Мок, который всегда отдаёт 200, проверяет половину вашего кода. Поставьте в response_status 404, 422 или 500 и заведите второй мок — тогда ветки обработки ошибок будут прогоняться так же осознанно, как happy path. Быстрее всего подобрать честный код по справочнику статусов MDN.

Если мок вызывается из браузера, а не из curl, включите cors_enabled. Без него браузер заблокирует ответ раньше, чем его увидит ваш код, а ошибка в консоли редко называет настоящую причину — см. MDN про CORS. Если тело ошибки хочется стандартизировать, RFC 9457 Problem Details даёт формат, который уже умеет разбирать вся индустрия.

Как потом заменить мок на настоящий API?

Держите базовый URL в конфигурации с первого дня, а не в коде компонента. Сейчас он указывает на мок, потом на реальный хост — и замена превращается в правку одной строки вместо поиска по всему проекту.

Моки здесь живут семь дней по умолчанию и максимум тридцать — обычно это дольше, чем разрыв, который вы перекрываете. Срок жизни тут не ограничение, а страховка: мок, тихо переживший настоящий эндпоинт, — это ровно то, как фикстура уезжает в прод. Если та же фикстура нужна коллеге, передавайте команду создания, а не URL, чтобы каждый мог пересоздать её у себя.

Что обычно идёт не так?

  • Мокают тот ответ, который хотелось бы получить. Фикстуру надо строить от реального контракта бэкенда, а не от того, что удобнее отрисовать.
  • Забывают тип контента. Без "content_type": "application/json" многие клиенты отдадут вам строку, и парсер упадёт на валидном JSON.
  • Проверяют только happy path. Если ни один тест не видел 500, ваша обработка ошибок не корректна, а просто не проверена.
  • Оставляют URL мока в смёрженной ветке. Место такому URL — в конфиге, а семидневный срок жизни не даёт ему стать постоянным.

Когда это нужно

Пока бэк не готов, фронт простаивает. Подними мок, который отдаёт ровно тот JSON, что ждёт UI, получи публичный URL и пиши фронт уже сейчас — реальный API подключишь позже.

Создать мок

curl -X POST https://quickmock.dev/api/mocks \
  -H 'Content-Type: application/json' \
  -d '{
  "method": "GET",
  "response_status": 200,
  "content_type": "application/json",
  "response_body": "{\"users\":[{\"id\":1,\"name\":\"Ada\"}]}"
}'

Вызвать

curl https://quickmock.dev/m/<slug>

Что получите

{"users":[{"id":1,"name":"Ada"}]}

Частые вопросы

Нужен ли аккаунт, чтобы создать мок REST-эндпоинта?
Нет. Ни регистрации, ни почты, ни API-ключа — вы отправляете описание мока и получаете живой URL. В ответе приходит одноразовый admin-токен: сохраните его, если планируете потом редактировать или удалить мок.
Сколько живёт эндпоинт?
Семь дней по умолчанию, максимум тридцать. Этого хватает на типичный разрыв между «фронтенд готов» и «бэкенд готов», а срок жизни не даёт устаревшим фикстурам протечь в прод.
Может ли ответ меняться от вызова к вызову?
Да. Faker-токены дают свежее тело на каждый вызов, последовательность ответов — разные статусы по порядку, задержка — медленный эндпоинт. Фиксированное тело это лишь самый простой случай.

Собери свой

Создать мок

Готовые шаблоны для этого: Замокать ответ токена OAuth2, Замокать discovery-документ OpenID Connect, Замокать эндпоинт JWKS для проверки JWT

Похожие гайды

← Все гайды

Обновлено: 2026-09-08