Curl - удобный инструмент командной строки для выполнения сетевых запросов. Он позволяет легко тестировать web-API, просматривать заголовки ответов серверов, делать запросы по протоколам HTTP, FTP и многим другим. Одной из распространенных задач является отправка данных на сервер методом POST. Давайте подробно разберем, как выполнять POST-запросы через curl.
Основы POST-запросов curl
POST-запрос используется для отправки данных на сервер, в отличие от GET-запроса, предназначенного для получения контента. Например, при регистрации на сайте пользователь заполняет форму, вводит логин, почту и другую информацию. Эти данные формы и отправляются методом POST.
Чтобы выполнить POST-запрос через curl, нужно указать параметр -X POST. По умолчанию используется метод GET. Вот пример базового POST-запроса без передачи параметров на сервер example.com:
curl -X POST https://example.com
Форматы данных для POST-запросов
Данные для передачи в теле POST-запроса могут быть представлены в разных форматах. Рассмотрим основные.
- application/x-www-form-urlencoded - параметры запроса кодируются, как в GET-запросе. Это формат данных HTML-форм по умолчанию. Например: name=john&age=30
- multipart/form-data - используется при загрузке файлов на сервер
- application/json - передача данных в виде JSON-объекта
Для выбора формата данных запроса служат параметры curl -d, -F, -H. Рассмотрим их подробнее в следующем разделе.
Заголовки POST-запросов
Любой запрос содержит заголовки - служебную информацию для сервера. У POST-запросов часто задают такие заголовки:
- Content-Type - формат данных в теле запроса
- Content-Length - размер тела запроса в байтах
- Authorization - данные для авторизации доступа
В curl заголовки запросов можно просматривать с параметром -v, а устанавливать свои - через -H.
Работа с параметрами POST-запросов curl
Давайте более подробно разберем основные параметры, используемые в POST-запросах curl.
Параметр -X
-X позволяет задать метод HTTP-запроса. По умолчанию используется GET, чтобы сделать POST нужно указать:
curl -X POST https://example.com
Параметр -d
С помощью -d можно передать строку данных на сервер. Эти данные будут закодированы как application/x-www-form-urlencoded.
Например, передача логина и почты регистрируемого пользователя:
curl -d 'user=john&email=john@example.com' -X POST https://example.com/register
Параметр -F
-F аналогичен -d, но позволяет указать тип Content-Type для данных, что удобно при загрузке файлов.
Загрузка текстового файла text.txt:
curl -F 'file=@text.txt' -X POST https://example.com/upload
Параметр -H
Установка заголовка запроса Authorization:
curl -H 'Authorization: Bearer token' -X POST https://example.com/create
POST-запросы curl имеют множество возможностей для гибкой настройки и передачи данных. В следующем разделе рассмотрим более сложные варианты использования.
Расширенные возможности POST-запросов curl
Кроме базовых параметров, curl поддерживает множество дополнительных опций для настройки POST-запросов.
Аутентификация
Для доступа к закрытым API часто требуется авторизация. В curl ее можно настроить несколькими способами.
Передача логина/пароля в заголовке Authorization:
curl -u login:password -X POST https://example.com
Использование OAuth токенов для аутентификации: