[转]使用 curl 发送 POST 请求的几种方式
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
|
|
跟发起 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
内容如下:
|
|
就可以通过
|
|
来提交数据。
如果要用 application/x-www-form-urlencoded
方式提交,后端解析出来同样的数据,那么 -d
的参数是这样的(注意数组参数的写法)
1 |
hello=world&xxx=yyy&a[]=ooo&a[]=mmm |
把这个字符串直接作为 -d
的参数或者把它写到文件 data.txt
然后通过 -d @data.txt
的方式,发起 POST 请求,行为和结果是一样的。
1 |
$ 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 |
[转]使用 curl 发送 POST 请求的几种方式的更多相关文章
- PHP 发送HTTP请求的几种方式
1.curl仍然是最好的HTTP库,没有之一. 可以解决任何复杂的应用场景中的HTTP 请求2. 文件流式的HTTP请求比较适合处理简单的HTTP POST/GET请求,但不适用于复杂的HTTP请求3 ...
- PHP发送HTTP请求的几种方式
转发:https://blog.tanteng.me/2017/07/php-curl-guzzlehttp/ 1)PHP开发中我们常用CURL 方式封装 HTTP请求,什么是CURL? CURL 是 ...
- 安卓中使用OkHttp发送数据请求的两种方式(同、异步的GET、POST) 示例-- Android基础
1.首先看一下最终效果的截图,看看是不是你想要的,这个年代大家都很忙,开门见山很重要! 简要说下,点击不同按钮可以实现通过不同的方式发送OkHttp请求,并返回数据,这里请求的是网页,所以返回的都是些 ...
- JavaWeb 发送post请求的2种方式(form、json)
JavaWeb 发送post请求的2种方式(form.json) CreationTime--2018年6月20日10点15分 Author:Marydon 前提:通过HttpClient来实现 ...
- 使用jmeter发送put请求的三种方式
之前在前公司使用jmeter调试接口时,由于都是get和post请求,所以一直是顺风顺水的,毫无阻拦在短时间内调试完所有接口. 但是呢,在换到新公司后,发现接口请求是多式多样的,get.post必须有 ...
- Python使用requests发送post请求的三种方式
1.我们使用postman进行接口测试的时候,发现POST请求方式的编码有3种,具体的编码方式如下: A:application/x-www-form-urlencoded ==最常见的post提交数 ...
- PHP发送POST请求的三种方式
class Request{ public static function post($url, $post_data = '', $timeout = 5){//curl $ch = curl_in ...
- .Net Core下发送WebRequest请求的两种方式
1.使用RestSharp.NetCore 2.使用WebApi请求方式
- php发送post请求的4种方式
http://blog.163.com/fan_xy_qingyuan/blog/static/188987748201411943815244/ class Request{ public stat ...
随机推荐
- fiddler证书问题
1.清除C:\Users\Administrator\AppData\Roaming\Microsoft\Crypto\RSA 目录下所有文件(首次安装fiddler请忽略) 2.清除电脑上的根证书, ...
- Keystore was tampered with, or password was incorrect
#修改key条目密码 # keytool -keypasswd -alias test.com -keypass oldkeypwd -new newkeypwd -storepass storepw ...
- xadmin集成DjangoUeditor,以及编辑器的视频路径配置
稍微讲一下DjangoUeditor的配置,因为之前去找配置的时候东拼西凑的,所以自己写一下自己一步步配置的过程.首先我是再github上去下载下来,因为是当作第三方插件集成到xadmin中,所以不用 ...
- C++学习(3)——指针
1. 指针所占内存空间 在32位操作系统下,占用4个字节,64位下占8个字节 2. 空指针与野指针 空指针:指针变量指向内存中编号为0的空间 用途:初始化指针变量 注意:空指针指向的内存量是不可以 ...
- es题目
1.elasticsearch了解多少,说说你们公司es的集群架构,索引数据大小,分片有多少,以及一些调优手段 .2.elasticsearch的倒排索引是什么?3.elasticsearch 索引数 ...
- anyproxy学习2-rule模块实现接口mock功能
前言 AnyProxy不仅仅可以抓包,还可以拦截请求并修改服务端响应,实现接口mock功能. 面试时候经常会问到第三方支付如何测试这种,如果对接的第三方没提供测试环境,那么就需要搭建一个mock服务器 ...
- Json在序列化getter导致的问题
Java中的Json序列化,不容忽视的getter 问题重现 public class AjaxJson { private boolean success; private String msg; ...
- ES6函数的个人总结
默认参数: 1. 在 ES5 语法中,为函数形参指定默认值的写法: 写法一: function foo (bar) { bar = bar || 'abc'; console.log(bar) } f ...
- JavaScript基础07——BOM
BOM概念 BOM是Browser Object Model的缩写,简称浏览器对象模型.这个对象就是window BOM提供了独立于内容而与浏览器窗口进行交互的对象 ...
- WinDbg命令窗口的使用
调试器命令窗口是windbg中的主要调试信息窗口.可以在此窗口中输入调试程序命令并查看命令输出.Windbg的命令窗口是我们进行调试时,主要打交道的窗口.界面如下 对于windbg,“调试器命令窗口” ...