curl调试api时常用的Http Content Type
大约 2 分钟
了解Http Content Type的起因
curl,一个很好的api调试工具。好几次想在Linxu Shell使用curl调试上游api接口,但我用起来不是很利索,原因之一是对Content Type 记不住有哪几种,以及它们之间的区别。
什么是Content Type
一般是指网页中存在的 Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是经常看到一些 PHP 网页点击的结果却是下载一个文件或一张图片的原因。Content-Type 标头告诉客户端实际返回的内容的内容类型。
curl常用的Content Type
使用curl做api接口测试时,常会用的Content Type:
- application/json
- application/x-www-form-urlencoded
这两个常用来做POST提交。它们的区别是:
- applicaton/json 提交的是json格式的数据,数据放在http body里面。
- application/x-www-form-urlencoded 提交的是类似key1=val1&key2=val2键值对,通常是表单。数据也是放在http body里面
总结
它们的区别是提交的数据结构体不同,但都是在http body里面
注意区分
Http GET方法有时也用于提交,也使用到了Parameters参数,也是以键值对形式,但提交的参数是在http header里,不是http body
curl POST数据到api接口
1、提交json
注意
提交json, 需要在header中显式指定Content-Type为applicaiton/json,因为curl默认是application/x-www-form-urlencoded
- 在命令行上提交json结构数据。
curl -H 'content-type: application/json' -X POST -d '{"accountType":"4","channel":"1"}' http://192.168.129.xx/my-api
- 直接提交本地json文件
curl -X POST -H 'content-type: application/json' -d @/apps/test.json http://192.168.129.xx/my-api
2. 提交application/x-www-form-urlencoded
application/x-www-form-urlencoded是默认数据格式,即表单KV ,例:
curl -d key1=value1&key2=value2 http://example.com
扩展
- 更多Content-Type
- http body中的数据提交后的后端接收(Springboot使用@requestBody注解接收)