curl
curl
Что такое curl
curl — это консольная утилита для отправки HTTP-запросов. Работает из командной строки: Terminal на macOS/Linux, а на Windows доступна из PowerShell или через Git Bash.
Почему это важно для тестировщика:
- Быстрая проверка API без открытия Postman
- Можно встроить в скрипты автоматизации
- Работает там, где нет GUI — на удалённых серверах
- Точное воспроизведение запроса одной командой, которую легко вставить в баг-репорт
Базовый синтаксис
curl [флаги] URL
Основные примеры
GET-запрос (простейший)
curl https://api.example.com/users
GET с заголовком авторизации
curl -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9..." \
https://api.example.com/me
POST с JSON-телом
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"name": "Иван", "email": "ivan@example.com", "password": "Secret123!"}'
PUT (обновление ресурса)
curl -X PUT https://api.example.com/users/42 \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Иван Петров"}'
DELETE
curl -X DELETE https://api.example.com/users/42 \
-H "Authorization: Bearer TOKEN"
Полезные флаги
| Флаг | Что делает | Пример |
|---|---|---|
-X | Метод запроса | -X POST |
-H | Добавить заголовок | -H "Content-Type: application/json" |
-d | Тело запроса | -d '{"key": "value"}' |
-v | Подробный вывод (verbose) — видны заголовки и статус | -v |
-o | Сохранить ответ в файл | -o response.json |
-s | Тихий режим — убрать прогресс-бар | -s |
-i | Показать заголовки ответа в выводе | -i |
--data-raw | Тело как есть, без обработки спецсимволов | --data-raw '{"q":"test"}' |
Разбор вывода с флагом -v
> POST /api/users HTTP/1.1 ← что ты отправляешь
> Host: api.example.com
> Content-Type: application/json
>
< HTTP/1.1 201 Created ← что сервер вернул
< Content-Type: application/json
< X-Request-Id: req-abc123
<
{"id": 5, "email": "ivan@example.com"} ← тело ответа
Строки с > — запрос. Строки с < — ответ.
Сохранение ответа в файл
curl -s https://api.example.com/users -o users.json
После этого открываешь users.json и изучаешь структуру ответа.
Когда curl особенно полезен
- Воспроизведение бага: один раз написал команду — вставил в баг-репорт, разработчик точно воспроизведёт
- Скрипт подготовки данных: создать 10 тестовых пользователей одним bash-скриптом
- Проверка на сервере: когда доступ только через SSH, и Postman недоступен
- Быстрая проверка: надо срочно проверить один эндпоинт — curl быстрее Postman
Пример баг-репорта с curl
Шаги воспроизведения:
1. Выполнить запрос:
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"email": "not-an-email"}'
2. Ожидаемый результат: 400 Bad Request с описанием ошибки
3. Фактический результат: 500 Internal Server Error, тело пустое
Что мы запомним
curl— консольный инструмент для HTTP-запросов, доступен на Linux/macOS, устанавливается на Windows- Основные флаги:
-X(метод),-H(заголовок),-d(тело),-v(подробный вывод) - Флаг
-vпоказывает и запрос, и ответ с заголовками - Команда curl — это точная воспроизводимая инструкция, отличный элемент баг-репорта
- Особенно ценен для проверок на удалённых серверах и автоматизации через скрипты