Основные команды 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. Эти команды работают на всех платформах и легко интегрируются в рабочие процессы разработки, делая их незаменимыми инструментами в наборе любого веб-разработчика.