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

8 gen 2024 3 min di lettura
Как сделать POST-запрос с помощью Curl
Indice dei contenuti

Введение

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

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

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

Варианты завивки

Метод 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=noviello&[email protected]' https://example.com/form/

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

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

curl -d 'name=noviello' -d '[email protected]' https://example.com/form/

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

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=noviello' -F '[email protected]' https://example.com/form/

Файл загружен

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

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

Данные POST JSON с помощью cURL

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

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

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

curl --json '{"website": "noviello.it"}' 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": "noviello.it"}' | curl --json @- http://example.com/api/

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

Заключение

Мы показали вам, как использовать curl для выполнения POST-запросов. Для получения дополнительной информации о curl посетите страницу документации Curl.

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

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.