Как отправить запрос на сервер через консоль

Хотите отправить запрос на сервер через консоль? Разбираем curl, wget и другие инструменты с примерами — освоите за пару минут даже без опыта!

Бесплатная консультация юриста

+7 (800) 301-07-30

Реклама jurik.ru

Отправка 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"

Разбор ответа сервера

После выполнения запроса сервер возвращает:

  1. Код состояния: 200 — успех, 404 — не найдено, 500, ошибка сервера, 401/403 — проблемы с авторизацией;
  2. Заголовки ответа — тип контента, куки, информация о сервере;

Для красивого вывода 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 и автоматизировать рутинные операции прямо из терминала.