- How do I POST JSON with Curl?
- What is Curl?
- What is JSON?
- What is HTTP POST?
- How to make a POST request with Curl?
- Curl POST Request Syntax
- Why do I need to explicitly specify the Content-Type when posting JSON using Curl?
- Why is it important to specify the correct Content-Type when submitting JSON?
- How to post JSON file with Curl?
- See also
- Generate Code Snippets for Curl POST JSON Example
- Как сделать POST-запрос с помощью cURL
- Выполнение запроса POST
- Указание Content-Type
- Загрузка файлов
- Выводы
- Using curl POST with variables defined in bash script functions
- 9 Answers 9
- Использование Curl для выполнения запросов REST API
- Параметры завивки
- HTTP GET
- HTTP POST
- HTTP PUT
- HTTP-ПАТЧ
- HTTP УДАЛИТЬ
- Аутентификация
- Выводы
- Что JavaScript-разработчику следует знать о Curl
- Отправка http-запроса
- Загрузка файлов
- Отправка авторизованного запроса
- Отправка POST-запроса, содержащего JSON
- Отправка PUT-запроса, содержащего JSON-файл
- Заключение
How do I POST JSON with Curl?
Compare Request Timings
What is Curl?
Curl is a popular command-line software for transferring data to or from the server using URL syntax. Curl supports many protocols, including HTTP, HTTPS, FTP, SFTP, and works on all modern platforms and hardware, including Linux, Windows, and macOS.
What is JSON?
JSON (JavaScript Object Notation) is a standard textual format for representing structured data based on the syntax of a JavaScript object. JSON is widely used for client/server communication, transferring data to and from the server in web and mobile applications.
What is HTTP POST?
POST is one of the most widely used methods of the HTTP protocol. The POST method requests the webserver to receive and process the data enclosed in the body of the POST message. The POST method is often used to upload files and submit HTML forms.
How to make a POST request with Curl?
There are two ways to send a POST request with Curl.
- When you use command-line parameters such as —data or —form and do not explicitly specify the required HTTP method, Curl automatically selects the POST method and sends a POST request with the application/x-www-form-urlencoded content type (or multipart/form-data for —form).
- Explicitly specify the required HTTP method using the -X command-line argument. For example, you need to use the -X POST-command-line parameter to send JSON using the POST method.
Curl POST Request Syntax
The general form of a Curl command for making a POST request with a JSON body is as follows:
Why do I need to explicitly specify the Content-Type when posting JSON using Curl?
If you submit data using Curl and do not explicitly specify the Content type, Curl uses the application/x-www-form-urlencoded content type for your data. Therefore, when sending JSON (or any other data type), you must specify the data type using the explicitly -H «Content-Type: application/json» command line parameter.
Why is it important to specify the correct Content-Type when submitting JSON?
In short, if you don’t set the correct Content-Type, your application may not work. The Content-Type header field indicates the media type included in the message payload. The specified media type determines both the format of the data and the way the server handles that data.
For example, if the server can accept XML and JSON data on the same API endpoint, setting the Content-Type to application/json will let the server know that the client is sending JSON data, and application/xml will tell the server that the client is sending XML.
How to post JSON file with Curl?
You can post a JSON file using Curl if you pass the filename in the -d command line parameter after the «@» symbol:
See also
Generate Code Snippets for Curl POST JSON Example
Convert your Curl POST JSON request to the PHP, JavaScript/AJAX, Curl/Bash, Python, Java, C#/.NET code snippets using the ReqBin code generator.
Источник
Как сделать POST-запрос с помощью cURL
cURL — это утилита командной строки для передачи данных с или на удаленный сервер с использованием одного из поддерживаемых протоколов. Он установлен по умолчанию в macOS и большинстве дистрибутивов Linux.
cURL используется разработчиками для тестирования API , просмотра заголовков ответов и выполнения HTTP-запросов.
В этой статье мы собираемся объяснить, как использовать cURL для выполнения запросов POST. Метод HTTP POST используется для отправки данных на удаленный сервер.
Выполнение запроса POST
Общая форма команды curl для выполнения запроса POST следующая:
Тип тела запроса указывается его заголовком Content-Type .
Обычно запрос POST отправляется через HTML-форму. Данные, отправляемые в форму, обычно кодируются в типе содержимого multipart/form-data или application/x-www-form-urlencoded .
Чтобы создать запрос POST, используйте параметр -F , за которым следует пара field=value . В следующем примере показано, как отправить POST-запрос в форму с полями «имя» и «электронная почта»:
Когда используется опция -F , curl отправляет данные с использованием Content-Type multipart/form-data .
Другой способ сделать запрос POST — использовать параметр -d . Это заставляет curl отправлять данные с использованием Content-Type application/x-www-form-urlencoded Content-Type.
Если параметр -d используется более одного раза, вы можете объединить данные с помощью символа & :
Указание Content-Type
Чтобы установить определенный заголовок или Content-Type, используйте параметр -H . Следующая команда устанавливает тип запроса POST на application/json и отправляет объект JSON:
Загрузка файлов
Чтобы отправить файл с помощью curl , просто добавьте символ @ перед местоположением файла. Файл может быть архивом, изображением, документом и т. Д.
Выводы
Мы показали вам, как использовать curl для выполнения запросов POST. Дополнительные сведения о curl см. На странице документации по Curl .
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Источник
Using curl POST with variables defined in bash script functions
When I echo I get this, which runs when I enter it into the terminal
But when run in the bash script file, I get this error
this is the code in the file
I assume there’s an issue with my quotation marks, but I’ve played with them a lot and I’ve gotten similar errors. All the variables are defined with different functions in the actual script
9 Answers 9
You don’t need to pass the quotes enclosing the custom headers to curl. Also, your variables in the middle of the data argument should be quoted.
First, write a function that generates the post data of your script. This saves you from all sort of headaches concerning shell quoting and makes it easier to read an maintain the script than feeding the post data on curl’s invocation line as in your attempt:
It is then easy to use that function in the invocation of curl:
This said, here are a few clarifications about shell quoting rules:
The double quotes in the -H arguments (as in -H «foo bar» ) tell bash to keep what’s inside as a single argument (even if it contains spaces).
The single quotes in the —data argument (as in —data ‘foo bar’ ) do the same, except they pass all text verbatim (including double quote characters and the dollar sign).
To insert a variable in the middle of a single quoted text, you have to end the single quote, then concatenate with the double quoted variable, and re-open the single quote to continue the text: ‘foo bar'»$variable»‘more foo’ .
Источник
Использование Curl для выполнения запросов REST API
Интерфейс прикладных программ (API) — это набор определений и протоколов, которые позволяют программам взаимодействовать друг с другом.
Термин REST означает передачу репрезентативного состояния. Это архитектурный стиль, состоящий из набора ограничений, используемых при создании веб-сервисов.
RESTful API — это API, который следует архитектуре REST. Обычно API-интерфейсы REST используют протокол HTTP для отправки и получения данных и ответов в формате JSON. Вы можете использовать стандартные методы HTTP для создания, просмотра, обновления или удаления ресурсов через API.
Для тестирования API RESTful и взаимодействия с ними вы можете использовать любую библиотеку или инструмент, который может выполнять HTTP-запросы.
Запросы API состоят из четырех разных частей:
- Конечная точка. Это URL-адрес, который клиент использует для связи с сервером.
- Метод HTTP. Он сообщает серверу, какое действие хочет выполнить клиент. Наиболее распространенные методы — GET POST PUT DELETE и PATCH
- Заголовки. Используется для передачи дополнительной информации между сервером и клиентом, например авторизации.
- Тело. Данные отправлены на сервер.
В этой статье мы собираемся обсудить, как использовать curl для взаимодействия с RESTful API. curl — это утилита командной строки для передачи данных с или на удаленный сервер. Он установлен по умолчанию в macOS и большинстве дистрибутивов Linux.
Параметры завивки
Синтаксис команды curl следующий:
Вот параметры, которые мы будем использовать при выполнении запросов:
- -X , —request — HTTP-метод, который будет использоваться.
- -i , —include — включить заголовки ответа.
- -d , —data — данные для отправки.
- -H , —header — дополнительный заголовок для отправки.
HTTP GET
Метод GET запрашивает у сервера определенный ресурс.
GET — это метод по умолчанию при выполнении HTTP-запросов с помощью curl . Вот пример выполнения запроса GET к API JSONPlaceholder для представления JSON всех сообщений:
Для фильтрации результатов используйте параметры запроса:
HTTP POST
Метод POST используется для создания ресурса на сервере. Если ресурс существует, он перезаписывается.
Следующая команда выполняет запрос POST, используя данные, указанные с параметром -d :
Тип тела запроса указывается с помощью заголовка Content-Type . По умолчанию, когда этот заголовок не задан, curl использует Content-Type: application/x-www-form-urlencoded .
Чтобы отправить данные в формате JSON, установите тип тела в application/json :
HTTP PUT
Метод PUT используется для обновления или замены ресурса на сервере. Он заменяет все данные указанного ресурса данными запроса.
HTTP-ПАТЧ
Метод PUT используется для частичного обновления ресурса на сервере.
HTTP УДАЛИТЬ
Метод DELETE удаляет указанный ресурс с сервера.
Аутентификация
Если конечная точка API требует аутентификации, вам необходимо получить ключ доступа. В противном случае сервер API ответит ответным сообщением «Доступ запрещен» или «Неавторизован».
Процесс получения ключа доступа зависит от API, который вы используете. Получив токен доступа, вы можете отправить его в заголовке:
Выводы
Мы показали вам, как использовать curl для выполнения тестовых запросов API. Дополнительные сведения о curl см. На странице документации по Curl .
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Источник
Что JavaScript-разработчику следует знать о Curl
Доброго времени суток, друзья!
Представляю Вашему вниманию перевод статьи «What JavaScript Developers Should Know About Curl» автора Valery Karpov.
Curl — это популярный инструмент командной строки, часто используемый для отправки HTTP-запросов. Curl поддерживает большое количество протоколов, однако как Node.js-разработчик вы, скорее всего, будете использовать его для отпраки http-запросов к RESTful API.
Документация curl представляет собой перечень из 383 флагов командной строки, поэтому в ней очень трудно найти то, что ищешь. В этой статье я хочу поделиться с вами некоторыми часто используемыми мной шаблонами. Для примеров будет использоваться сервис httpbin.org.
Отправка http-запроса
Для начала убедитесь в том, что у вас установлен curl, выполнив команду curl —version .
Для отправки запроса необходимо запустить curl url . Например, для отправки GET-запроса к https://httpbin.org/get?answer=42 следует запустить curl https://httpbin.org/get?answer=42 .
После успешного завершения запроса curl возвращает тело http-ответа. Для того, чтобы заставить curl вернуть весь ответ, включая заголовки, используйте флаг -i.
Это полный http-ответ. Заголовками ответа являются строки от date: до x-envoy-upstream-service-time: .
Загрузка файлов
Wget — самый распространенный инструмент для загрузки файлов посредством командной строки. Он входит в комплект большинства диструбутивов Linux. Однако в OSX его нет.
Команда wget url аналогична команде curl -OL url . Опция -О — это опция —remote-name , которая говорит curl сохранить тело ответа в локальном файле. Опция -L говорит curl следовать перенаправлениям.
Например, ниже представлено изображение с Unsplash, его URL — https://images.unsplash.com/photo-1506812574058-fc75fa93fead .
Для загрузки этого изобюражения необходимо выполнить следующее:
Опция -O говорит curl использовать строку после последнего / в качестве имени файла. В приведенном примере изображение будет сохранено в текущей директории с именем photo-1506812574058-fc75fa93fead . Для определения имени файла используйте опцию -о (строчная буква «о»).
Отправка авторизованного запроса
Заголовок авторизации используется для включения в запрос данных для авторизации при обращении к RESTful API. Для добавления указанных данных необходимо использовать флаг -H . Например, если ваш ключ интерфейса (API key) my-secret-token , вы можете включить его в http-запрос следующим образом:
Обратите внимание, что httpbin.org возвращает заголовки http-запроса в теле ответа в свойстве headers .
Curl также поддерживает авторизацию по-умолчанию посредством флага -u . В следующем примере мы отправляем запрос с именем пользователя user и паролем pass :
Вот что происходит при отправке неправильного имени пользователя или пароля:
Отправка POST-запроса, содержащего JSON
Флаг -X говорит curl, какой метод следует использовать: PUT, POST и т.д. По-умолчанию curl использует метод GET, поэтому писать curl -X GET не нужно.
Флаг -X часто используется совместно с флагом -d , позволяющим добавить тело запроса. В следующем примере показано как отправить POST-запрос, содержащий некоторый json:
Обратите внимание, что по-умолчанию значением заголовка Content-Type является application/x-www-form-urlencoded . Для json это является неверным, поэтому для определения Content-Type следует использовать флаг -H :
Отправка PUT-запроса, содержащего JSON-файл
Флаг -d также поддерживает отправку данных из локальных файлов.
Например, представим, что у нас есть файл data.js , содержащий такие данные:
Для отправки PUT-запроса с этим файлом в качестве тела запроса вы можете присвоить флагу -d значение @data.json . Префикс @ говорит curl загрузить тело запроса из файла data.json :
Заключение
Резюмируя, вот опции curl, которые я нахожу самыми полезными:
- -X определяет метод запроса, например, curl -X POST url
- -d определяет тело запроса в виде строки в PUT и POST-запросах. Используйте @ для извлечения данных из файла
- -H определяет заголовок запроса, например, curl -H «Authorization: my-secret-token» url
- -u аутентификационные данные для стандартной авторизации
- -O сохраняет тело запроса в файл
- -i показывает полный ответ, включая заголовки
Curl — полезный инструмент взаимодействия с API посредством командной строки, независимо от того, сторонний это API или API, который вы разрабатываете. Для быстрого тестирования curl подходит лучше, чем Axios в Node.js или настройка запроса в Postman, если вы знакомы с их синтаксисом.
Благодарю за потраченное время. Надеюсь, оно было потрачено не зря.
Источник