[转]使用 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. curl 命令模拟 HTTP GET/POST 请求

    在 Linux 操作系统上对后端程序进行测试的时候,需要进行模拟连接或者书写测试脚本 curl  访问百度,通 […]...

  2. curl的基本使用

    基本使用 1. 初始化 初始化非常简单,只需要调用curl_init()函数即可,他会返回一个curl句柄,后 […]...

  3. POST 方式上传图片

    Post 方式 模仿 form表单 上传 图片 设置enctype = multipart/form-data […]...

  4. Linux(centos) 下curl模拟Http get / post请求 [ curl ] – Joinc

    Linux(centos) 下curl模拟Http get / post请求 [ curl ] 一、get请求 […]...

  5. post、get的区别

    post、get的区别 2011-05-31 15:54  qinuo  阅读(150)  评论(0)  编辑 […]...

  6. Http POST 提交 415错误 Unsupported Media Type 解决方案

    1 问题 在调用webapi post 提交时出现 415 Unsupported Media Type 错误 […]...

  7. axios post 400 状态码

    1、400状态码 400的主要有两种形式: (1)、bad request意思是“错误的请求”; […]...

  8. PHP实现CURL发送请求

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

随机推荐

  1. [Java反射机制]用反射改进简单工厂模式设计

      如果做开发的工作,工厂设计模式大概都已经深入人心了,比较常见的例子就是在代码中实现数据库操作类,考虑到后期 […]...

  2. 安卓手机下载YouTube视频的3种方法

    安卓手机上怎么下载YouTube视频?本文提供了3种方法,电脑软件、安卓app、网站。 作为全球最大的在线视频 […]...

  3. HTML5初识

    1、标题h1-h6对齐方式:align属性2、文字斜体:em/I/cite下划线u带删除线strike文字上标sup文字下标sub应用:书写方程式特殊文字符号:"引号 &It;左尖括号 >右尖括号 &t...

  4. Redis事务、持久化、发布订阅

    Redis事务、持久化、发布订阅 一、Redis事物 1. 概念   Redis 事务可以一次执行多个命令, […]...

  5. FusionInsight MRS:你的大数据“管家”

    摘要:4月24日-26日,HDC.Cloud2021在深圳大学城成功举办,华为云FusionInsight M […]...

  6. NSCharacterSet使用

    (一)NSCharacterSet作用:   对字符串进行上做过滤、删除或者分割操作 + (NSCharact […]...

  7. java8的新特性,Collections.sort(排序的List集合)的使用,对list封装Map里面的某个值进行排序

    --------------------------对简单list的排序------------------- […]...

  8. JavaWeb基础知识总结.

    JavaWeb基础知识总结   1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示 […]...

展开目录

目录导航