cURL – довольно мощный инструмент для работы с HTTP-запросами. Почти любой возможный HTTP-запрос можно исполнить из консоли с помощью cURL. Так что крайне полезно знать об этой утилите: вы можете как тестировать свой интерфейс, так и передавать другим программистам точный запрос, по которому не работает API.
К примеру, тот же postman – часто используемый инструмент для тестирования web-сервисов, по сути делает ровно то же самое. Даже его файлы с запросами можно легко и быстро (и даже программно) преобразовать в cURL-запросы. Вот какой замечательный cURL – самое время ознакомиться с ним и его ключами:
Варианты использования
-o {{ file }} или же --output – записать результат выполнения в файл. По умолчанию всё печатается на стандартный поток вывода.
-u user:pass или --user – стандартный basic auth http – авторизация, что прописана в протоколе.
-v – подробный вывод действий cURL, -vv – ещё подробнее.
-I или --head – только заголовки HTTP.
Запрос cURL
-X POST или --request POST – отправить POST-запрос. Аналогично с остальными HTTP-методами (по умолчанию – GET). Также, если использовать ключи для передачи данных (-d) – по умолчанию будет POST.
Данные cURL запроса
-d 'data' (--data – полное написание ключа) – Добавление данных в HTTP запрос, которые потом закодируются (urlencode).
-d @file – передать файл POST-запросом (в body HTTP запроса).
-G (--get) – если мы хотим переслать параметры GET-запросом (в query string).
Заголовки cURL запроса
-A {{ str }} (или же --user-agent) – указываем user-agent (типа имя браузера).
-b name=val (или --cookie) – если надо передать в заголовке куки.
-b FILE – также куки можно взять из файла.
-H "X-Foo: y" (полное название ключа – --header) – используем, чтобы указать произвольный заголовок.
--compressed – используем алгоритм deflate, он же – gzip.
Используем HTTPS / SSL в cURL запросе
--cacert {{ file }} – указываем файл сертификата.
--capath {{ dir }} – определяем директорию сертификата.
-E, --cert {{ cert }} – указываем клиентский cert файл.
--cert-type – устанавливаем тип: der/pem/eng.
-k, --insecure – отключаем проверку подлинности сертификата (если протух или самоподписан, например)
Примеры использования cURL
Отправляем POST-запрос:
curl -d password=x http://x.com/y
POST-запрос с basic auth аутентификацией:
curl -u user:pass -d status="Hello" \
http://twitter.com/statuses/update.xml
Отправляем файл через cURL:
curl -v -include --form key1=value1 \
--form upload=@localfilename {{ URL }}
Делаем JSON-запрос POST-ом:
curl -d '{"key1":"value1", "key2":"value2"}' \
-H "Content-Type: application/json"
-X POST {{ URL }}