Простая CLI‑утилита на Go для проверки HTTP‑эндпоинтов: выводит статус, латентность и объём прочитанного тела, поддерживает интерактивный ввод URL, автодобавление https://, таймаут, ретраи, прокси и JSON‑вывод.
Утилита построена на основе следующих компонентов:
- CLI-интерфейс (Cobra) — обработка команд и флагов, интерактивный ввод URL
- HTTP-клиент — настраиваемый транспорт с поддержкой таймаутов, прокси и TLS
- Retry-механизм — автоматические повторы при временных сбоях сети
- JSON-вывод — машиночитаемый формат для интеграции с другими инструментами
Основной поток работы:
- Парсинг аргументов командной строки
- Нормализация URL (добавление https:// при необходимости)
- Выполнение HTTP-запроса с учетом таймаутов и ретраев
- Измерение латентности и чтение тела ответа
- Вывод результата в человекочитаемом или JSON-формате
- Требуется Go 1.22+.
- Клонирование и сборка:
git clone <repo> && cd easy-http-pinggo build -o easy-http-ping
Альтернатива: запуск без сборки — go run . ping из корня проекта.
- Интерактивный режим:
go run . ping— ввестиexample.com; утилита подставитhttps://автоматически. - Неинтерактивный:
go run . ping --url https://httpbin.org/get. - Сборка и запуск бинарника:
go build -o easy-http-ping && ./easy-http-ping ping --url ya.ru.
--url— адрес для проверки; при отсутствии включается интерактивный ввод и автодобавлениеhttps://.--timeout— таймаут HTTP‑клиента, например2sили500ms.--retries— число повторов при ошибках сети/временных сбоях.--method— HTTP‑метод (GET,HEAD,POST);HEADне читает тело и быстрее для health‑checks.--insecure— отключить проверку TLS‑сертификата; использовать только в dev/QA, небезопасно для продакшена.--json— машиночитаемый вывод в JSON с полямиup,status,ms,bytes,url,attempts.--max-bytes— лимит чтения тела (байт), 0 — без ограничения; по умолчанию 1 МБ.
Полный список и примеры доступны в easy-http-ping ping --help.
- Интерактив:
easy-http-ping ping— вводservice.local→ запрос кhttps://service.local.
- JSON‑вывод:
easy-http-ping ping --url example.com --json.
- Быстрый health‑check:
easy-http-ping ping --url https://service/health --method HEAD --timeout 2s --retries 2.
- Самоподписанные сертификаты в dev:
easy-http-ping ping --url https://localhost:8443 --insecure.
- Большие ответы:
easy-http-ping ping --url https://example.com/big --max-bytes 65536.
- Работа через корпоративный прокси:
HTTPS_PROXY=https://proxy.company:8443 NO_PROXY=localhost,127.0.0.1 easy-http-ping ping --url service.local.