Чтобы отправить JSON-данные с помощью Curl, необходимо установить Content-Type запроса на application/json и передать JSON-данные с помощью параметра командной строки -d. Тип содержимого JSON задается с помощью параметра командной строки -H "Content-Type: application/json".
Данные JSON передаются в виде строки. Двойные кавычки в JSON должны быть экранированы обратным слешем "\" на компьютерах под управлением Windows.
1 2 3 | curl -X POST https://example.com/echo/post/json -H 'Content-Type: application/json' -d '{"login":"my_login","password":"my_password"}' |
В этом примере Curl POST JSON мы отправляем JSON на адрес example.com.
Что такое Curl?
Curl - это мощный инструмент командной строки, используемый для отправки и получения данных по различным протоколам с использованием нотации URL. Он поддерживает широкий спектр протоколов, включая HTTPS, HTTPS, FTP, SFTP и многие другие. Curl разработан для бесперебойной работы на различных платформах и архитектурах, от Linux и Windows до macOS и выше.
Что такое JSON?
JSON (JavaScript Object Notation) - это облегченный текстовый формат, предназначенный для инкапсуляции структурированных данных, основанный на синтаксисе JavaScript. JSON, используемый в первую очередь при взаимодействии сервера и клиента, стал наиболее распространенным форматом для передачи данных через Интернет в веб- и мобильных приложениях благодаря своей простоте и удобству использования.
Что такое HTTP POST?
POST - это один из самых распространенных методов протокола HTTP. Метод POST запрашивает веб-сервер на получение и обработку данных, заключенных в теле сообщения POST. Метод POST часто используется для загрузки файлов и отправки HTML-форм.
Как сделать POST-запрос с помощью Curl?
Есть два способа отправить POST-запрос с помощью Curl.
- Когда вы используете параметры командной строки, такие как --data или --form, и не указываете явно требуемый HTTP-метод, Curl автоматически выбирает метод POST и отправляет POST-запрос с типом содержимого application/x-www-form-urlencoded (или multipart/form-data для --form).
- Явно укажите нужный метод HTTP с помощью аргумента командной строки -X. Например, вы можете использовать параметр командной строки -X POST-command-line для отправки JSON методом POST.
Почему нужно явно указывать Content-Type при отправке JSON с помощью Curl?
Если вы отправляете данные с помощью Curl и не указываете тип содержимого, Curl использует тип содержимого application/x-www-form-urlencoded для ваших данных. Поэтому при отправке JSON (или любого другого типа данных) вы должны указать тип данных с помощью параметра командной строки -H "Content-Type: application/json".
Почему важно указывать правильный Content-Type при отправке JSON?
Если коротко, ваш сервер может работать некорректно, если вы не зададите правильный Content-Type. Заголовок Content-Type указывает тип носителя, включенный в полезную нагрузку POST-сообщения. Указанный медиатип определяет как формат данных, так и то, как сервер обрабатывает эти данные.
Например, если сервер может принимать данные XML и JSON в одной и той же конечной точке API, установка Content-Type в application/json позволит серверу узнать, что клиент отправляет данные JSON, а application/xml сообщит серверу, что клиент отправляет XML.
Синтаксис POST-запроса Curl
Общий вид команды Curl для выполнения POST-запроса с телом в формате JSON выглядит следующим образом:
1 2 3 | curl -X POST [URL] -H "Content-Type: application/json" -d "[JSON data]" |
Где:
- -X, --request: HTTP-метод, используемый при взаимодействии с сервером.
- -H, --header: HTTP-заголовки, отправляемые на сервер при POST-запросе.
- -d, --data: Данные, которые будут отправлены на сервер с помощью POST-запроса.
Примеры Curl POST JSON
Ниже приведены примеры отправки JSON с помощью Curl:
Отправка JSON с помощью Curl
Ниже приведен пример отправки данных JSON на адрес example.com:
1 2 3 | curl -X POST https://reqbin.com/echo/post/json -H 'Content-Type: application/json' -d '{"name":"Leo","age":26}' |
Публикация JSON-файла с помощью Curl
Чтобы опубликовать JSON-файл с помощью Curl, вы можете передать имя файла в параметре командной строки -d после символа "@":
1 | curl -X POST https://example.com/echo/post/json -d @filename |
Отправка JSON со специальными символами
Чтобы отправить строку данных JSON со специальными символами, вы должны экранировать символы в строке, чтобы ваш сервер мог правильно их обработать.
1 2 3 | curl -X POST https://example.com/echo/post/json -H 'Content-Type: application/json' -d '{"message":"Hello World!","special_characters":"\/\r\n\t"}' |