Вы можете использовать параметр командной строки -X PUT, чтобы выполнить HTTP PUT-запрос с помощью Curl. Данные запроса PUT передаются с параметром командной строки -d. Если вы передадите -d и опустите -X, Curl автоматически выберет метод HTTP POST. Параметр -X PUT явно указывает Curl выбрать метод HTTP PUT вместо POST. Тип данных для запроса Curl задается с помощью параметра командной строки -H.
1 2 | curl -X PUT https://exampe.com/echo/put/json -d "PUT request data" |
В этом примере Curl PUT мы отправляем запрос на адрес example.com.
Что такое HTTP?
HTTP (Hypertext Transfer Protocol) - это сетевой протокол для обмена данными между двумя сетевыми устройствами, широко используемый для передачи данных между HTTP-клиентами (браузером или мобильным приложением) и сервером. HTTP построен на сообщениях, называемых "запрос" и "ответ". Каждое HTTP-сообщение состоит из строки запроса, HTTP-заголовков и тела сообщения.
Для чего используется метод HTTP PUT?
HTTP PUT - это один из часто используемых методов протокола HTTP. Метод PUT создает новый ресурс на сервере или заменяет существующий ресурс полезной нагрузкой запроса. В отличие от метода PATCH, данные запроса PUT должны содержать полное представление ресурса. Метод HTTP PUT определен как идемпотентный, что означает, что несколько одинаковых запросов HTTP PUT должны иметь тот же эффект, что и один запрос.
Как отправить данные с помощью метода PUT в Curl?
Вы можете передавать данные в Curl с помощью опций командной строки -d или -F, как и в любом другом запросе Curl. Curl автоматически выберет тип содержимого application/x-www-form-urlencoded для параметра командной строки -d и multipart/form-data для параметра командной строки -F, если вы явно не укажете свой собственный Content-Type с помощью параметра -H. Например, чтобы отправить на сервер данные в формате JSON, необходимо использовать параметр командной строки -H "Content-Type: application/json", чтобы явно указать тип данных в запросе PUT.
Синтаксис запроса PUT в Curl
Общий вид команды Curl для выполнения запроса PUT выглядит следующим образом:
1 2 3 | curl -X PUT [URL] -H "Content-Type: [content type]" -d "[request data]" |
Что такое Content-Type?
HTTP-заголовок Content-Type используется для указания медиатипа ресурса в теле запроса Curl. Для ответа сервера заголовок Content-Type сообщает Curl тип данных в теле ответа.
1 2 3 | Content-Type: application/json Content-Type: text/html; charset=UTF-8 Content-Type: multipart/form-data; boundary=any-string |
Почему мне нужно явно указывать Content-Type для PUT-запросов Curl?
Если вы отправляете данные с помощью Curl и не указываете тип данных, Curl будет использовать application/x-www-form-urlencoded для вашего содержимого. Поэтому при отправке JSON вы должны явно выбрать тип данных с помощью ключа командной строки -H "Content-Type: application/json". Если вы не зададите правильный Content-Type, ваше веб-приложение может не работать. Например, если сервер может принимать данные XML и JSON в одной и той же конечной точке API, установка Content-Type в application/xml позволит серверу понять, что данные пришли в формате XML.
Примеры PUT-запросов Curl
Ниже приведены примеры отправки PUT-запроса в Curl:
Базовый пример PUT-запроса Curl
Ниже приведен базовый пример отправки PUT-запроса на адрес example.com:
1 2 3 | curl -X PUT https://example.com/echo/put/json -H "Content-Type: application/json" -d '{"key": "value"}' |
Отправка запроса PUT с телом JSON
При выполнении PUT-запроса с данными JSON необходимо передать Curl заголовок -H "Content-Type: application/json", чтобы указать тип данных в теле PUT-сообщения. Этот заголовок очень важен и позволяет серверу правильно интерпретировать и обрабатывать полученные JSON-данные.
1 2 3 | curl -X PUT https://example.com/echo/put/json -H "Content-Type: application/json" -d '{"key": "value"}' |
Отправка PUT-запроса с токеном аутентификации
Чтобы отправить PUT-запрос с токеном носителя, вы можете использовать заголовок -H с ключом "Authorization", который указывает метод аутентификации.
1 2 3 4 | curl -X PUT https://example.com/echo/put/json -H "Authorization: Bearer YOUR_ACCESS_TOKEN" -H "Content-Type: application/json" -d '{"key": "value"}' |
Отправка необработанных данных с помощью запроса PUT
Чтобы отправить необработанные данные в запросе PUT с помощью Curl, вы можете использовать параметр командной строки --data-raw. Флаг --data-raw в команде Curl отправляет данные на сервер в теле запроса без дополнительной обработки или модификации.
1 2 | curl -X PUT https://example.com/echo/put/json --data-raw "Raw data" |
Отправка запроса PUT с данными формы
Чтобы отправить PUT-запрос с данными формы, вы можете использовать флаг -F, чтобы указать, что отправляете данные в формате multipart/form-data.
1 2 | curl -X PUT https://example.com/echo/put/json |
Отправка PUT-запроса с данными из файла
Чтобы отправить PUT-запрос с данными из файла, вы можете использовать флаг -d или -F, чтобы указать путь к файлу. Curl автоматически попытается определить Content-Type на основе расширения файла. Если файл имеет расширение .json, Curl предположит, что он содержит JSON-данные, и установит в заголовке Content-Type на application/json. Ниже приведен пример PUT-запроса с данными из файла с использованием флага -d в Curl:
1 2 | curl -X PUT https://example.com/echo/put/json -d @path/to/file.json |
Ниже приведен пример PUT-запроса с данными из файла с использованием флага -F в Curl:
1 2 | curl -X PUT https://example.com/echo/put/json -F "file=@path/to/file.json" |