Публичный API и CLI

Автоматизируйте создание моков и тестовых окружений с помощью официальной CLI утилиты или curl.

Создать мок руками — нормально ровно один раз. Когда свой одноразовый эндпоинт нужен каждому прогону CI, каждому интеграционному тесту и каждому превью ветки, это хочется заскриптовать. Публичный API — это один POST без аутентификации, возвращающий URL и одноразовый admin-токен, а CLI quickmock — тонкая обёртка над этим же вызовом. И то и другое превращает мок в то, что пайплайн создаёт, использует и выбрасывает, ни разу не открыв браузер.

Как поставить CLI?

CLI — это один бинарник на Go без рантайм-зависимостей. Ставится тулчейном Go:

go install github.com/Deadsquirrel93/quickmock.dev/cmd/quickmock@latest

Исполняемый файл quickmock окажется в $(go env GOPATH)/bin. Если этого каталога ещё нет в PATH, добавьте его: свежая установка Go обычно его туда не кладёт, и command not found сразу после успешного go install почти всегда означает именно это и ничего больше.

На стороне сервера ставить нечего, конфигурационного файла нет. Если вы держите свой инстанс Quickmock, а не пользуетесь quickmock.dev, укажите его флагом -url — остальные флаги работают так же.

Что именно делает CLI?

Вся работа — в одной подкоманде. create принимает те же поля, что и API, только флагами:

quickmock create -m POST -s 201 -c application/json \
  -H 'X-Request-Id: abc' \
  -b '{"status":"created"}'

Он печатает две строки: публичный URL мока и его одноразовый admin-токен. URL — то, что будут дёргать тесты. Токен — то, чем потом можно отредактировать, продлить, удалить мок или прочитать его приватный лог. Показывается он ровно один раз и не восстанавливается, поэтому забирайте его тем же шагом, который создаёт мок, а не следующим.

Флаг -H повторяется для каждого заголовка ответа — ровно как у curl. Значение без двоеточия не игнорируется, а отвергается с ошибкой, так что опечатка валит шаг, а не создаёт молча мок без заголовка.

Как создать мок прямо из пайплайна?

В пайплайне CLI — часто лишняя зависимость, а API — один запрос. Создайте мок на шаге подготовки, передайте URL дальше и дайте TTL прибраться за вами:

MOCK=$(curl -s -X POST https://quickmock.dev/api/mocks \
  -H 'Content-Type: application/json' \
  -d '{"method":"GET","response_status":200,"ttl_seconds":3600}')
echo "MOCK_URL=$(echo "$MOCK" | jq -r .url)" >> "$GITHUB_ENV"

Ставьте ttl_seconds близко к реальной длительности задачи. Мок с часовым TTL исчезнет сам, а значит отменённая или упавшая задача не оставит за собой мусора и не понадобится шаг очистки, который может и не выполниться.

Заодно не пускайте admin-токен в лог. curl -s через jq -r .url печатает только URL; вывод всего тела ответа записывает рабочий секрет в лог сборки, который прочитает любой, у кого есть доступ к проекту.

Что обычно ломается?

  • Выбросить admin-токен. Он есть в ответе на создание и больше нигде. Без него мок нельзя ни отредактировать, ни удалить, ни прочитать его приватные логи — только дождаться истечения.
  • Мок на каждый тест-кейс. Лимит активных моков на IP реален, а раннер CI — это один IP. Создавайте один мок на задачу и разводите случаи именованными вариантами или маршрутами.
  • Захардкоженный slug. Slug выдаётся, а не выбирается. Читайте поле url из ответа и передавайте дальше именно его.
  • Без TTL. Без ttl_seconds мок живёт по серверному умолчанию — сильно дольше, чем задача, которой он был нужен.

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

Ручное создание отлично подходит для прототипирования, но CI/CD и автотесты требуют воспроизводимых окружений. API и CLI позволяют скриптовать создание и удаление моков на лету, передавая полученные URL напрямую в тесты.

Создать мок

curl -X POST https://quickmock.dev/api/mocks \
  -H 'Content-Type: application/json' \
  -d '{
  "method": "POST",
  "response_status": 201,
  "response_body": "{\"status\":\"created\"}"
}'

Вызвать

curl -X POST https://quickmock.dev/m/<slug>

Что получите

{"status":"created"}

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

Нужен ли аккаунт или API-ключ?
Нет. POST /api/mocks не требует аутентификации: чтобы создать мок, не нужно ничего, кроме самого запроса. Аутентификация появляется уже после — admin-токен из ответа защищает редактирование, удаление и приватный инспектор только что созданного мока.
Как удалить мок, когда задача закончилась?
Отправьте DELETE /api/mocks/<slug> с admin-токеном в заголовке Bearer. На практике короткий ttl_seconds надёжнее: истечение прибирает и за теми задачами, которые упали или были отменены раньше, чем дошли до шага очистки.
Можно пользоваться API не из Go?
Да. Это обычный HTTP и JSON, подойдёт любой клиент — CLI лишь удобство для шелла и Makefile, и ничего в API от него не зависит. В справочнике по API перечислены все эндпоинты с готовыми примерами на curl.

Собери свой

Создать мок

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

← Все гайды

Обновлено: 2026-10-17