【问题标题】:How to do a PUT request with cURL?如何使用 cURL 执行 PUT 请求?
【发布时间】:2012-11-26 18:13:38
【问题描述】:

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

【问题讨论】:

    标签: rest http curl


    【解决方案1】:

    将 -X 标志与您想要的任何 HTTP 动词一起使用:

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

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

    【讨论】:

    • "man curl" on -X: "通常你不需要这个选项。各种 GET、HEAD、POST 和 PUT 请求都是通过使用专用的命令行选项来调用的。"但我找不到其他方法。
    • 一年后,我找到了办法!卷曲 -T
    • 由于 Martin C. Martin 的答案在从服务器重定向后也更改为 GET,在我看来这是更有用的答案。
    • 要实现重定向后的GET,添加参数--location
    • Curl 7.47 这对我不起作用。 theabraham 的答案始终默认为发布行为。然而 --get (或 -G )将强制 -d (--data )字段成为 url 参数并且确实有效。
    【解决方案2】:

    快速回答:

    在一行中,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/comment。

    【讨论】:

    • 不知道为什么这被否决了...我在这里复制了如何将 JSON 正文传递给 curl PUT 的想法。 postman 也是一个非常棒的工具,可以为更复杂的查询获取 curl 代码:)
    • 谢谢!!即使我不知道为什么会反对。可能是用户不愿意采用它。我已经在 POSTMAN 中创建了我所有用于移动设备的 REST api 的响应,这是我可以向任何使用 REST 的人建议的最佳生产力提示。
    • 真实世界的例子,我在终点传递 json 数据和参数; curl -X PUT -H "Content-Type: application/json" -d '{"amount":"999","type":"car","parent_id":"12345"}' localhost:8080/transactionservice/transaction/2222
    • 必须安装一个完整的浏览器(如果没有 Chrome)和扩展程序对于某些人来说可能是矫枉过正。至少您可以为另一个更常见的(默认安装)网络浏览器(如 Firefox)提供替代方案,其中 HttpRequester 执行类似的工作。
    • 它可能会被否决,因为问题是关于 curl 的。
    【解决方案3】:

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

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

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

    【讨论】:

    • 不幸的是,如果您想用-d 或-F 指定参数,-T 不能替代-X PUT。 -T 通过 PUT 发送文件的内容。要实现重定向后的GET,添加参数--location
    • 如果filename.txt在远程服务器上怎么办?
    【解决方案4】:
    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'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-11
        • 1970-01-01
        • 2015-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-01
        • 2018-04-29
        相关资源
        最近更新 更多