Программы
Базовые примеры использования cURL

Базовые примеры использования cURL

cURL – слишком хороший инструмент разработчика HTTP-сервисов, чтобы его игнорировать. Многие проблемы можно диагностировать и продемонстрировать с помощью его.

cURL – довольно мощный инструмент для работы с HTTP-запросами. Почти любой возможный HTTP-запрос можно исполнить из консоли с помощью cURL. Так что крайне полезно знать об этой утилите: вы можете как тестировать свой интерфейс, так и передавать другим программистам точный запрос, по которому не работает API.

К примеру, тот же postman – часто используемый инструмент для тестирования web-сервисов, по сути делает ровно то же самое. Даже его файлы с запросами можно легко и быстро (и даже программно) преобразовать в cURL-запросы. Вот какой замечательный cURL – самое время ознакомиться с ним и его ключами:

Изображение Шпаргалка по командам Linux, FreeBSD и MacOS

Варианты использования

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