12k
All articles

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

Тестирование API через командную строку ускоряется с ключевыми командами curl: GET, POST, заголовки, аутентификация, таймауты и отладка для веб-разработчиков.

OpenReplay Team
OpenReplay Team
Основные команды 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
  • Лучшее форматирование по умолчанию

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

Как обрабатывать ограничения скорости API с помощью команд curl?

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

В чем разница между флагами -d и -F в curl?

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

Могу ли я использовать curl для тестирования GraphQL API?

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

Как отлаживать проблемы с SSL-сертификатами с помощью curl?

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

Какой лучший способ тестировать аутентифицированные API с curl?

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

We use cookies to improve your experience. By using our site, you accept cookies.