[转]使用 curl 发送 POST 请求的几种方式

lyggqm 2021-12-08 原文

HTTP 的 POST 请求通常是用于提交数据,可以通过这篇文章来了解各种提交方式:四种常见的 POST 提交数据方式。做 Web 后端开发时,不可避免地要自己给自己发请求来调试接口,这里要记录的内容是如何使用命令行工具 curl 来进行各种方式的 POST 请求。

application/x-www-form-urlencoded

最常见的一种 POST 请求,用 curl 发起这种请求也很简单。

1
$ curl localhost:3000/api/basic -X POST -d \'hello=world\'

multipart/form-data

这种请求一般涉及到文件上传。后端对这种类型请求的处理也复杂一些。

1
$ curl localhost:3000/api/multipart -F raw=@raw.data -F hello=world

application/json

1
$ curl localhost:3000/api/json -X POST -d \'{"hello": "world"}\' --header "Content-Type: application/json"

跟发起 application/x-www-form-urlencoded 类型的 POST 请求类似,-d 参数值是 JSON 字符串,并且多了一个 Content-Type: application/json 指定发送内容的格式。

这个例子和 application/x-www-form-urlencoded 中的例子发起的请求,到了 Web 后端经过解析后,得到的结果都是 hello: world 键值对。

文件内容作为要提交的数据

如果要提交的数据不像前面例子中只有一个 hello: world 键值对,数据比较多,都写在命令行里很不方便,也容易出错,那么可以把数据内容先写到文件里,通过 -d @filename 的方式来提交数据。这是 -d 参数的一种使用方式,所以前面用到 -d 参数的地方都可以这样用。

实际上就是把 -d 参数值写在命令行里,变成了写在文件里。跟 multipart/form-data 中上传文件的 POST 方式不是一回事。@ 符号表明后面跟的是文件名,要读取这个文件的内容作为 -d 的参数。

例如,有一个 JSON 文件 data.json 内容如下:

1
2
3
4
5
{
    "hello": "world",
    "xxx": "yyy",
    "a": ["ooo", "mmm"]
}

就可以通过

1
$ curl localhost:3000/api/json -X POST -d @data.json --header "Content-Type: application/json"

来提交数据。

如果要用 application/x-www-form-urlencoded 方式提交,后端解析出来同样的数据,那么 -d 的参数是这样的(注意数组参数的写法)

1
hello=world&xxx=yyy&a[]=ooo&a[]=mmm

把这个字符串直接作为 -d 的参数或者把它写到文件 data.txt 然后通过 -d @data.txt 的方式,发起 POST 请求,行为和结果是一样的。

1
2
3
$ curl localhost:3000/api/basic -X POST -d \'hello=world&xxx=yyy&a[]=ooo&a[]=mmm\'

$ curl localhost:3000/api/basic -X POST -d @data.txt

版权声明:本文为lyggqm原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/lyggqm/p/11502835.html

[转]使用 curl 发送 POST 请求的几种方式的更多相关文章

  1. PHP实现CURL发送请求

    public function curl($url, $params = false, $ispost = 0){$httpInfo = array();//初始化$ch = curl_init();/*CURL_HTTP_VERSION...

  2. CURL POST 请求

    CURL POST 请求 curl -H "Content-Type: application/json" - […]...

  3. CURL post请求

    1 /*****post请求******/ 2 public function postDataCurl($u […]...

  4. java使用MQTT发送数据

    1.建立Maven项目点击文件->新建->项目 2.配置pom.xml文件<project xmlns="http://maven.apache.org/P...

  5. 如何处理CURL返回结果乱码问题

    利用Curl调用API时,出现返回值是乱码的情况。但是在postman和浏览器中访问,返回值都是正常的。后来查阅了一些解决方法,最终解决问题。...

  6. curl 获取网页及post数据

    使用PHP的cURL库可以简单和有效地去抓网页。你只需要运行一个脚本,然后分析一下你所抓 取的网页,然后就可以 […]...

  7. curl支持HTTP和https

    设计流程 基于curl工具实现https/http,设计初步流程为:linux平台验证→→交叉移植arm板。 […]...

  8. HTTP 405 的错误提示:消息 JSP 只允许 GET、POST 或 HEAD。Jasper 还允许 OPTIONS 的解决方法

    HTTP 405 的错误提示:消息 JSP 只允许 GET、POST 或 HEAD。Jasper 还允许 OP […]...

随机推荐

  1. E-R图的注意点与画法

    (1)数据冗余性(redundancy)。由于文件之间缺乏联系,造成每个应用程序都有对应的文件,有可能同样的数 […]...

  2. mysql 统计sql

    1、按照月份统计数据 SELECT DATE_FORMAT(d.create_time,\’%Y- […]...

  3. 机器学习实例—4.1、Logistic回归基础篇之梯度上升算法

    机器学习实例—4.1、Logistic回归基础篇之梯度上升算法 一、总结 一句话总结: Logis […]...

  4. php源码分析之base64_encode函数

    base64_encode编码规律分析   字符串长度除以3向上取整乘以4等于编码后的字符串长度 ceil(s […]...

  5. 20165334 我期待的师生关系

    我期待的师生关系 我认为的好老师 1、文章感触 读完《老师能提供什么帮助》我深切地感受到老师对编程的热爱,对计 […]...

  6. [platform]linux platform device/driver(一)–Driver是如何找到对应的device

      1.platform device是怎么”自动”关联到platform drive […]...

  7. MFQ&&PPDCS

    在之前工作中使用了一段时间的MFQ&PPDCS进行新需求的测试分析和设计,现梳理一下整个流程:   M […]...

  8. 一款强大的、原生态 Javascript 打造的在线(Web) HTML 颜色选择器(color picker)

    一款强大的、原生态 Javascript 打造的在线(Web) HTML 颜色选择器(color picker […]...

展开目录

目录导航