Back

Основные команды curl, которые должен знать каждый веб-разработчик

Основные команды curl, которые должен знать каждый веб-разработчик

Новичок в curl? Начните с нашего руководства для начинающих: Выполнение HTTP-запросов с curl

При отладке API или тестировании конечных точек вам нужны быстрые, надежные инструменты, которые не требуют сложной настройки. Хотя GUI-инструменты, такие как Postman, имеют свое место, команды curl для веб-разработчиков предлагают непревзойденную скорость и гибкость для тестирования из командной строки. Этот справочник охватывает основные команды curl, которые вы будете использовать ежедневно, от базовых GET-запросов до продвинутых паттернов аутентификации.

Ключевые выводы

  • Сначала освойте базовые GET и POST запросы — они покрывают 80% потребностей тестирования API
  • Всегда включайте правильные заголовки для Content-Type и Authorization
  • Используйте подробный режим (-v) при отладке проблем с подключением
  • Устанавливайте таймауты, чтобы предотвратить зависание скриптов в продакшен-окружениях
  • Сохраняйте ответы в файлы для анализа и сравнения
  • Следуйте редиректам с -L для полных цепочек запросов
  • Комбинируйте curl с инструментами, такими как jq, для лучшей обработки JSON

Основные команды curl для тестирования API

1. Базовый GET-запрос

Самая простая команда curl получает данные с любого URL:

curl https://api.github.com/users/octocat

Это возвращает необработанный JSON-ответ. Для лучшей читаемости передайте вывод через форматтер JSON:

# macOS/Linux
curl https://api.github.com/users/octocat | jq

# Windows (требует установки jq)
curl https://api.github.com/users/octocat | jq

Когда использовать: Быстрое тестирование конечных точек API, проверка отвечают ли сервисы, или получение данных для скриптов.

2. POST-запрос с JSON-данными

Современные API ожидают JSON-пейлоады. Вот как их правильно отправлять:

curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"name":"John Doe","email":"john@example.com"}' \
  https://api.example.com/users

Для сложного JSON сохраните его в файл и сошлитесь на него:

curl -X POST \
  -H "Content-Type: application/json" \
  -d @user-data.json \
  https://api.example.com/users

Когда использовать: Создание ресурсов, отправка форм или тестирование POST-конечных точек со структурированными данными.

3. Добавление пользовательских заголовков

API часто требуют специфических заголовков для аутентификации, согласования контента или пользовательских параметров:

curl -H "Authorization: Bearer your-token-here" \
     -H "Accept: application/json" \
     -H "User-Agent: MyApp/1.0" \
     https://api.example.com/protected-resource

Когда использовать: Аутентификация API, установка пользовательских агентов, указание форматов ответов или добавление пользовательских заголовков приложения.

4. Следование редиректам

По умолчанию curl останавливается на редиректах. Используйте -L для автоматического следования им:

curl -L https://bit.ly/shortened-url

Ограничьте количество переходов по редиректам, чтобы предотвратить бесконечные циклы:

curl -L --max-redirs 5 https://example.com

Когда использовать: Тестирование сокращенных URL, следование редиректам API или проверка цепочек редиректов в ваших приложениях.

5. Сохранение ответа в файл

Вместо засорения терминала сохраняйте ответы непосредственно в файлы:

# Сохранить с оригинальным именем файла
curl -O https://example.com/data.json

# Сохранить с пользовательским именем файла
curl -o my-data.json https://api.example.com/export

# Сохранить заголовки и тело отдельно
curl -D headers.txt -o response.json https://api.example.com/data

Когда использовать: Скачивание файлов, сохранение ответов API для анализа или архивирование результатов тестирования.

6. Базовая аутентификация

Многие API все еще используют базовую аутентификацию. Обрабатывайте её безопасно:

curl -u username:password https://api.example.com/secure-endpoint

Для лучшей безопасности позвольте curl запросить пароль:

curl -u username https://api.example.com/secure-endpoint

Когда использовать: Тестирование внутренних API, доступ к конечным точкам разработки или работа с устаревшими системами аутентификации.

7. Подробный вывод для отладки

Когда запросы терпят неудачу или ведут себя неожиданно, подробный режим показывает именно то, что происходит:

curl -v https://api.example.com/endpoint

Это отображает:

  • Отправленные заголовки запроса
  • Полученные заголовки ответа
  • Детали SSL/TLS-рукопожатия
  • Информацию о соединении

Когда использовать: Отладка неудачных запросов, понимание поведения API или устранение проблем с SSL.

8. Установка таймаутов

Предотвратите зависание запросов, установив таймауты соединения и общие таймауты:

# 10-секундный таймаут соединения, 30-секундный общий таймаут
curl --connect-timeout 10 --max-time 30 https://slow-api.example.com

Когда использовать: Тестирование медленных конечных точек, предотвращение зависания скриптов или работа с ненадежными сетями.

9. Отправка данных формы

Для традиционных отправок форм или загрузки файлов:

# Стандартные данные формы
curl -X POST -d "username=john&password=secret" https://example.com/login

# Загрузка файла
curl -F "file=@document.pdf" -F "description=Important doc" https://example.com/upload

Когда использовать: Тестирование конечных точек форм, загрузка файлов или работа с multipart-данными.

10. Включение заголовков ответа

Просмотр как заголовков, так и тела в выводе:

# Включить заголовки с ответом
curl -i https://api.example.com/endpoint

# Только заголовки (полезно для проверки кодов состояния)
curl -I https://api.example.com/endpoint

Когда использовать: Проверка кодов ответа, отладка проблем с кэшированием или изучение заголовков API.

Продвинутые команды curl для веб-разработчиков

Работа с cookies

Поддержание состояния сессии между запросами:

# Сохранить cookies в файл
curl -c cookies.txt https://example.com/login

# Использовать сохраненные cookies
curl -b cookies.txt https://example.com/dashboard

Конфигурация прокси

Маршрутизация запросов через прокси для тестирования или безопасности:

curl --proxy http://proxy.company.com:8080 https://api.example.com

Обработка SSL-сертификатов

Для сред разработки с самоподписанными сертификатами:

# Пропустить проверку сертификата (только для разработки)
curl -k https://localhost:8443/api

# Использовать пользовательский CA-сертификат
curl --cacert custom-ca.pem https://secure-api.example.com

Советы по производительности и автоматизации

Пакетные операции

Эффективное тестирование нескольких конечных точек:

# Несколько URL в одной команде
curl https://api1.example.com https://api2.example.com

# Из файла
curl -K url-list.txt

Форматирование вывода

Сделайте ответы более читаемыми:

# Красивое форматирование JSON с jq
curl -s https://api.example.com/data | jq '.'

# Извлечение конкретных полей
curl -s https://api.example.com/users | jq '.[] | .name'

Обработка ошибок

Заставьте curl тихо завершаться с ошибкой при HTTP-ошибках для скриптинга:

curl --fail --silent https://api.example.com/endpoint || echo "Request failed"

curl против других инструментов: когда что использовать

Используйте curl когда:

  • Быстрое тестирование из командной строки
  • Скриптинг и автоматизация
  • Интеграция в CI/CD-пайплайны
  • Минимальное использование системных ресурсов

Используйте Postman когда:

  • Сложные коллекции запросов
  • Командная работа
  • Визуальная инспекция ответов
  • Продвинутые рабочие процессы тестирования

Используйте HTTPie когда:

  • Предпочтителен более читаемый синтаксис
  • Тестирование API, ориентированных на JSON
  • Лучшее форматирование по умолчанию

Часто задаваемые вопросы

Используйте опцию limit-rate для ограничения запросов, например, ограничив скорость до 200 килобайт в секунду. Вы также можете добавлять задержки между запросами в скриптах, используя команды sleep.

Флаг -d отправляет данные как form-encoded, что является значением по умолчанию для POST-запросов. Флаг -F отправляет данные как multipart form data, что требуется при загрузке файлов.

Да. Для этого отправьте POST-запрос с JSON-пейлоадом, который включает ваш GraphQL-запрос.

Используйте подробный режим для инспекции SSL-рукопожатия, временно пропустите проверку сертификата при необходимости, используя флаг insecure, или укажите пользовательский центр сертификации с опцией cacert.

Для токен-основанной аутентификации передавайте заголовок Authorization с вашим токеном. Для базовой аутентификации используйте опцию username и password. Для улучшения безопасности храните чувствительные значения в переменных окружения и ссылайтесь на них в ваших командах.

Заключение

Эти команды curl формируют основу тестирования API из командной строки. Начните с базовых GET и POST запросов, затем постепенно включайте заголовки, аутентификацию и продвинутые функции по мере роста ваших потребностей. Ключ в том, чтобы выработать мышечную память для наиболее распространенных паттернов — как только вы сможете быстро тестировать конечные точки из терминала, вы обнаружите, что постоянно обращаетесь к curl во время разработки и отладки.

Команды curl для веб-разработчиков обеспечивают основу для эффективного тестирования и отладки API. Эти команды работают на всех платформах и легко интегрируются в рабочие процессы разработки, делая их незаменимыми инструментами в наборе любого веб-разработчика.

Listen to your bugs 🧘, with OpenReplay

See how users use your app and resolve issues fast.
Loved by thousands of developers