Як зробити запит PUT з завиткою?


412

Як перевірити метод RESTful PUT (або DELETE) за допомогою curl?

Відповіді:


566

Використання -Xпрапора з будь-яким HTTP дієсловом, яке ви хочете:

curl -X PUT -d arg=val -d arg2=val2 localhost:8080

Цей приклад також використовує -dпрапор для надання аргументів із вашим запитом PUT.


17
"man curl" на -X: "Зазвичай ця опція вам не потрібна. Усі види запитів GET, HEAD, POST та PUT викликаються за допомогою спеціальних параметрів командного рядка." Але я не могла знайти іншого шляху.
Мартін К. Мартін

44
Через рік я знайшов спосіб! curl -T
Martin C. Martin

2
Оскільки відповідь Мартіна К. Мартіна також змінюється на GET після перенаправлення з сервера, на мою думку, це більш корисна відповідь.
Мартін

2
Щоб досягти GETперенаправлення після, додайте параметр--location
Martin M

1
Curl 7.47, і це не допоможе мені. відповідь теабрахама завжди за замовчуванням до поведінки в посту. --get (або -G), однак, змусить поля -d (--data) перетворитись на параметри url і справді працює.
Джеймс Пауелл

101

Швидкий відповідь:

У одному рядку командою curl буде:

a) Якщо ви надсилаєте дані форми:

curl -X PUT -H "Content-Type: multipart/form-data;" -F "key1=val1" "YOUR_URI"

b) Якщо надсилати необроблені дані як json:

curl -X PUT -H "Content-Type: application/json" -d '{"key1":"value"}' "YOUR_URI"

c) Якщо ви надсилаєте файл із запитом POST:

curl -X POST "YOUR_URI" -F 'file=@/file-path.csv'

Альтернативне рішення:

Ви можете використовувати додаток POSTMAN з Chrome Store, щоб отримати еквівалентний запит CURL. Це особливо корисно при написанні складніших запитів.

Для запиту в інших форматах або для різних клієнтів, таких як java, PHP, ви можете перевірити POSTMAN / коментар нижче.

POSTMAN, щоб отримати код запиту


4
Поняття не маю, чому це було скасовано ... Я скопіював сюди ідею, як передавати корпус JSON для скручування PUT. Також листоноша - це чудовий інструмент для отримання коду для завитка для складніших запитів :)
Mikael Lepistö

2
Дякую !! Навіть я навіть не маю уявлення, чому про похідні гри. Користувачі можуть не бажати його приймати. Я створив відповідь на всі мої програми REST для мобільних пристроїв у POSTMAN, і це найкраща порада щодо продуктивності, яку я можу запропонувати всім, хто працює з REST.
Prateek

Приклад із реального світу, коли я передаю дані та параметр json у кінцевій точці; curl -X PUT -H "Тип вмісту: application / json" -d '{"сума": "999", "type": "машина", "parent_id": "12345"}' localhost: 8080 / transakserservice / транзакція / 2222
vikramvi

1
Необхідність встановити повний веб-переглядач (якщо у нього немає Chrome) та розширення для нього може бути надмірним для деяких людей. Принаймні, ви могли б запропонувати альтернативу іншому більш поширеному (встановлення за замовчуванням) веб-браузеру, як Firefox, де HttpRequester робить подібну роботу.
rbaleksandar

5
Це може бути спроможним, оскільки питання стосується завивки.
tuxayo

28

Приклад PUT за коментарем Мартіна К. Мартіна:

curl -T filename.txt http://www.example.com/dir/

З -T(таким же, як --upload-file) curl використовуватиме PUT для HTTP.


8
На жаль, значення -Tне замінює, -X PUTякщо ви хочете вказати параметри за допомогою -dабо -F. -Tнадсилає вміст файлу через PUT. Щоб досягти GETперенаправлення після, додайте параметр--location
Martin M

що робити, якщо filename.txt знаходиться на віддаленому сервері?
bosari

7
curl -X PUT -d 'new_value' URL_PATH/key

де,

X - опція, яка використовується для команди запиту

d - опція, що використовується для розміщення даних на віддаленому URL-адресі

URL_PATH - віддалений URL

new_value - значення, яке ми хочемо поставити до ключа сервера


5

Я запізнився на цю тему, але у мене теж була схожа вимога. Оскільки мій сценарій динамічно будував запит на curl, я хотів подібну структуру команди через GET, POST та PUT.

Ось що для мене працює

Для запиту PUT :

curl --request PUT --url http://localhost:8080/put --header 'content-type: application/x-www-form-urlencoded' --data 'bar=baz&foo=foo1'

Для запиту POST :

curl --request POST --url http://localhost:8080/post --header 'content-type: application/x-www-form-urlencoded' --data 'bar=baz&foo=foo1'

Для GET запиту:

curl --request GET --url 'http://localhost:8080/get?foo=bar&foz=baz'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.