Отправка HTTP-запросов из командной строки, базовый навык для разработчиков, системных администраторов и тестировщиков. В этой статье мы подробно разберём, как выполнить GET- и POST-запросы через консоль с помощью популярных утилит: curl, wget и httpie.
Зачем отправлять запросы из консоли?
- Быстрая проверка доступности API или сайта;
- Отладка серверных приложений;
- Автоматизация задач в скриптах (bash, cron);
- Тестирование веб-хуков и интеграций;
- Работа на серверах без графического интерфейса.
Утилита curl, универсальный инструмент
curl — самый популярный инструмент для работы с HTTP-запросами. Он предустановлен в большинстве Linux-дистрибутивов, macOS и доступен в Windows 10/11.
Простой GET-запрос
Базовый синтаксис GET-запроса выглядит так:
curl http://example.com/api/service=test
Например, запрос с параметрами (как в типичной задаче с форумов):
curl "http://server-.example.ru:8080/service=test&user=ivan"
Обратите внимание: URL с параметрами лучше заключать в кавычки, чтобы символ & не интерпретировался командной оболочкой.
GET-запрос с заголовками
Часто сервер требует передачи заголовков, например токена авторизации:
curl -H "Authorization: Bearer eyJhbG...xyz" -H "Content-Type: application/json" https://api.example.com/data
POST-запрос с данными
Отправка данных в формате JSON:
curl -X POST https://api.example.com/users -H "Content-Type: application/json" -d '{"name": "Иван Петров", "phone": "+7 (9) --12"}'
Отправка данных формы:
curl -X POST -d "login=user&password=paword" https://example.com/login
Полезные флаги curl
-v— подробный вывод (заголовки запроса и ответа);-i, показать заголовки ответа вместе с телом;-o file.txt, сохранить ответ в файл;-L, следовать редиректам;-k— игнорировать ошибки SSL-сертификата (только для тестов!);-u user:pass— базовая HTTP-аутентификация, например-u admin:seret.
Утилита wget
wget изначально предназначен для скачивания файлов, но тоже умеет отправлять запросы:
wget -qO- "http://example.com/service=test"
Флаг -qO- выводит ответ сервера прямо в консоль. Для POST-запроса:
wget --post-data="key=value" -qO- http://example.com/api
HTTPie — дружелюбная альтернатива
Если синтаксис curl кажется сложным, попробуйте httpie (устанавливается через pip install httpie или пакетный менеджер):
http GET api.example.com/service test==true
http POST api.example.com/users name="Иван " email="iv@example.com"
Разбор ответа сервера
После выполнения запроса сервер возвращает:
- Код состояния: 200 — успех, 404 — не найдено, 500, ошибка сервера, 401/403 — проблемы с авторизацией;
- Заголовки ответа — тип контента, куки, информация о сервере;
Для красивого вывода JSON можно использовать утилиту jq:
curl -s https://api.example.com/data | jq .
Типичные ошибки и их решение
- «command not found» — установите curl:
sudo apt install curl(Debian/Ubuntu) илиsudo yum install curl(CentOS); - Пустой ответ — проверьте URL, порт и доступность сервера командой
ping server*.example.ru; - Ошибка SSL — проверьте сертификат или временно используйте флаг
-k; - Код 401/403, проверьте токен или логин/пароль;
- Спецсимволы в URL — заключайте адрес в кавычки и экранируйте символы.
Отправка запросов через консоль — простой и мощный способ взаимодействия с серверами. Начните с curl: он покрывает 99% задач — от простого GET-запроса вида curl "http://host/service=test" до сложных авторизованных POST-запросов с JSON. Освоив несколько базовых флагов, вы сможете быстро тестировать API и автоматизировать рутинные операции прямо из терминала.