Публичный 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