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 }}