16

学会使用Curl调试接口

 4 years ago
source link: http://blog.poetries.top/2019/12/12/linux-curl/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
  • -X/--request [GET|POST|PUT|DELETE|…] 使用指定的 http method 发出 http request
  • -H/--header 设定 request 里的 header
  • -i/--include 显示 responseheader
  • -d/--data 设定 http parameters
  • -v/--verbose 輸出比较多的信息
  • -u/--user 使用者账号
  • -b/--cookie cookie 文件路径 使用 cookie

同一个功能常会有两个完全相同的参数, 一个是比较短的参数, 另一个是比较长的参数

参数 -X--request 两个功能是一样的 curl -X POST http://www.example.com or curl --request POST http://www.example.com/ 是完全相同的.

二、curl发送请求参数使用

  • curl 发送请求参数使用

2.1 设置header

curl -i -H "Content-Type: application/json" http://www.baidu.com

2.2 设置HTTP parameter

curl -X POST -d "param1:value1&param2=value2" 或者 -d "param1=value1" -d "param2=value2"

2.3 session认证

curl -X GET 'http://www.baidu.com/' --header 'sessionid:sessionid值'

2.4 使用cookie

curl -i --header "Content-Type:application/json" -X GET -b ~/cookie.txt http://www.baidu.com

测试接口上传文件:我们用 -F "file=@__FILE_PATH__" 的方式,传输文件即可, 如果想看到详细的请求信息,可以加上 -v 参数 curl -i -X POST -F 'file=@/User/uploadFile.txt' -H "token:abc123 “ -v

2.5 HTTP基本认证

curl -i -u username:password http://www.baidu.com/api/foo'

2.6 post请求

由于我们平时遇到接口请求都是 post 请求,所以接下来我们以 post 请求为例,分别探讨http协议和https协议两种情况下如何通过curl命令来调试接口;

http协议

curl -v -X POST http://localhost:3000/api/posts --data '{"title":"controller", "content": "what is controller"}' -H 'Content-Type:application/json; charset=UTF-8'
  • -v 显示版本信息
  • --header 等同于 -H 指定请求头(可校验调用方是否有权限,通过判断请求头信息,如果有规定的请求头信息,则允许调用,否则拒绝调用
  • --data 请求参数(请求报文)
  • -X :指定请求方式

通过 curl 发出的 HTTP 请求的内容就会是下面这样的

POST /api/posts HTTP/1.1
Host: localhost:3000
Content-Type: application/json; charset=UTF-8

{"title": "controller", "content": "what is controller"}

https协议

curl -v -k -X POST http://localhost:3000/api/posts
–cert '/app/milo/tomcat/milogenius/webapps/client.crt'
–key '/app/milo/tomcat/milogenius/webapps/client.key'
–pass 'milogenius'
  • -k :允许不使用证书到 SSL 站点;
  • -cert : 客户端证书文件;
  • -key : 私钥文件名 ( SSL );
  • -pass : 私钥密码 ( SSL );

2.7 扩展知识

  • curl post 请求, 数据可以采用 xml 或者 json 格式, 并且可以发送本地 xmljson 文件
curl -H 'Content-Type:application/json' -X POST -d '{"name":"zhangsan"}' http://www.baidu.com/
curl -X POST -H 'content-type: application/json'  -d /apps/jsonfile.json http://www.baidu.com/
curl -X POST -H 'content-type:application/xml'  -d '<?xml version="1.0" encoding="UTF-8"?><name>zhangsan</name>' http://www.baidu.com/

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK