如何使用curl进行PUT请求?


412

如何使用curl测试RESTful PUT(或DELETE)方法?

Answers:


566

-X标志与所需的任何HTTP动词一起使用:

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

本示例还使用该-d标志为您的PUT请求提供参数。


17
-X上的“ man curl”:“通常不需要此选项。所有的GET,HEAD,POST和PUT请求都可以通过使用专用的命令行选项来调用。” 但是我找不到其他方法。
马丁C.马丁

44
一年后,我找到了办法!curl -T
Martin C. Martin

2
从服务器重定向后,由于Martin C. Martin的答案也更改为GET,因此我认为这是更有用的答案。
2015年

2
GET在重定向后实现,请添加参数--location
Martin M

1
卷曲7.47,这对我不起作用。theabraham的答案始终默认为发布行为。--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'

替代解决方案:

您可以使用Chrome商店中的POSTMAN应用来获取等效的cURL请求。在编写更复杂的请求时,这尤其有用。

对于其他格式的请求,或针对Java,PHP等不同客户端的请求,您可以在下面查看POSTMAN /评论。

POSTMAN获取请求代码


4
不知道为什么这会被否决...我在这里复制了如何将JSON正文传递给curl PUT的想法。邮递员也是一个非常棒的工具,可以获取卷曲代码以进行更复杂的查询:)
MikaelLepistö16年

2
谢谢 !!即使我也不知道为什么要投票。用户可能不愿意采用它。我已经在POSTMAN中为移动设备创建了所有REST API的存储库,这是我可以向使用REST的任何人建议的最佳生产力提示。
Prateek

我在终点传递json数据和参数的真实示例;curl -X PUT -H“ Content-Type:application / json” -d'{“ amount”:“ 999”,“ type”:“ car”,“ parent_id”:“ 12345”}' localhost:8080 / transactionservice /交易/ 2222
vikramvi

1
必须安装一个完整的浏览器(如果没有Chrome)和一个扩展程序,可能对某些人恕我直言。至少您可以为另一个更常见的(默认安装)Web浏览器(例如Firefox)提供替代方法,其中HttpRequester可以完成类似的工作。
rbaleksandar

5
可能会被否决,因为问题在于卷曲。
tuxayo

28

Martin C. Martin的评论后的示例PUT:

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

使用-T(与相同--upload-file)curl将对HTTP使用PUT。


8
不幸的-T是,-X PUT如果您想使用-d或指定参数,则不能替代-F-T通过PUT发送文件的内容。要GET在重定向后实现,请添加参数--location
Martin M

如果filename.txt在远程服务器上怎么办?
bosari '18 -10-8

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

哪里,

X-用于请求命令的选项

d-用于将数据放在远程url上的选项

URL_PATH-远程网址

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'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.