Как сделать POST-запрос с помощью curl

curl POST

curl — это утилита командной строки для передачи данных с/на удалённый сервер по одному из поддерживаемых протоколов. Она установлена по умолчанию в Windows, macOS и большинстве дистрибутивов Linux.

Системные администраторы, разработчики и другие пользователи используют curl для тестирования API , просмотра заголовков ответов и выполнения HTTP-запросов.

В этой статье объясняется, как использовать curl для выполнения POST-запросов.

Параметры cURL

Для отправки данных на удаленный сервер используется метод HTTP POST.

Общая форма команды curl для выполнения запроса POST выглядит следующим образом:

 curl -X POST [ options ] [ URL ]

Параметр -X определяет метод HTTP-запроса, который будет использоваться при взаимодействии с удалённым сервером. В большинстве случаев указывать метод не требуется, так как он определяется параметрами командной строки.

Выполнение POST-запроса

Типичный POST-запрос отправляется через HTML-форму, а данные, отправляемые в форму, обычно кодируются в формате application/x-www-form-urlencoded . Ключи и значения данных кодируются парами «ключ-значение», разделёнными символом & и символом = между ключом и значением.

Чтобы отправить запрос POST с помощью curl , используйте опцию -d ( --data ), чтобы указать данные:

 curl -d 'name=linuxize&email=linuxize@example.com' https://example.com/form/

В приведенном выше примере мы отправляем на удаленный сервер данные, состоящие из двух пар ключ-значение: «name=linuxize» и « email=linuxize@example.com ».

Вы также можете отправлять данные, используя несколько опций -d . Например, приведенную выше команду можно записать так:

 curl -d 'name=linuxize' -d 'email=linuxize@example.com' https://example.com/form/

При отправке данных в curl с опцией -d необходимо всегда корректно кодировать все символы, не являющиеся буквами и цифрами, как в ключах, так и в значениях. Например, если вы отправляете данные, содержащие имя с пробелами («John Doe»), команда будет выглядеть так:

 curl -d 'name=John%20Doe' https://example.com/form/

Однако вручную кодировать данные, которые ещё не закодированы, несколько неудобно. В этом случае лучше использовать опцию --data-urlencode , которая указывает curl кодировать предоставленные данные. Приведённая выше команда с опцией --data-urlencode будет выглядеть следующим образом:

 curl --data-urlencode 'name=John Doe' https://example.com/form/

Данные, передаваемые команде curl , обычно имеют формат key=value . При использовании параметра --data-urlencode кодируется только значение. curl ожидает, что ключ уже закодирован в URL.

Если вы отправляете данные, содержащие большое количество пар «ключ-значение», вместо того, чтобы вводить данные в командной строке, вы можете сохранить их в файле и передать этот файл в curl :

 curl -d @name_of_the_file https://example.com/form/

Если данные, предоставленные команде, начинаются с символа @ , curl рассматривает данные как файл в локальной системе и будет читать и использовать данные из этого файла.

Выполнение запроса POST с использованием данных многочастной формы

Тип содержимого multipart/form-data используется, когда данные формы содержат двоичные файлы или другие полезные данные большого размера.

Чтобы создать составной POST-запрос, вызовите команду curl с одним или несколькими параметрами -F ( --form ), а затем укажите пары key=value . При использовании параметра -F curl отправляет данные с использованием типа содержимого multipart/form-data .

В следующем примере показано, как выполнить POST-запрос к форме, содержащей поля «имя» и «изображение»:

 curl -F 'name=linuxize' -F 'image@photo.jpg' https://example.com/form/

Загрузка файлов

Чтобы отправить файл с помощью curl , добавьте символ @ перед местоположением файла. Файл может быть архивом, изображением, документом и т. д.

 curl -F 'image=@/home/user/Pictures/wallpaper.jpg' http://example.com/upload/

Отправка данных JSON с помощью cURL

JSON — это текстовый формат данных, который используется для передачи данных между веб-сервисами и API.

Вы можете отправить данные JSON методом POST с помощью curl , используя опцию --json .

Вот простой пример отправки JSON-объекта на сервер:

 curl --json '{"website": "linuxgazette.ru"}' http://example.com/api/

curl отправляет данные JSON как есть, поэтому убедитесь, что они имеют допустимый формат JSON.

Как и в обычных запросах POST, вы можете использовать несколько опций --json в одной команде:

 curl --json '{"name": "Jonn"}' --json '{"age": "36"}' http://example.com/api/

Данные JSON также можно прочитать из локального файла:

 curl --json @json_data.txt http://example.com/api/

Если вы используете curl в скрипте, вы можете передать JSON-данные из другой команды в curl , как показано ниже:

 echo '{"website": "linuxgazette.ru"}' | curl --json @- http://example.com/api/

Часть @- означает чтение тела из стандартного ввода.

Заключение

Мы показали вам, как использовать curl для выполнения POST-запросов. Подробнее о curl можно узнать на странице документации Curl .

Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.

curl -терминал

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *