|
# T! a; q& X$ m
引言程序开发我们免不了要与其他系统,或者与第三方软件数据提供商进行数据交互一般的最佳实践就是使用API进行那么在初期开发的时候,如何快速的测试接口的使用方式,或者快速的定位故障有没有比较便捷的工具呢?
! N: }1 u! Q6 a- W* j% X+ [ 今天我们要说的就是 curl 指令这个工具非常强大几乎提供了一个浏览器对于接口调试所拥有的各项功能,而且各大编程语言所使用的底层网络请求库,通过它来实现的本文通过接口调试中常见的几种协议和传参方式,向大家介绍 curl 的快速用法。
$ o; e- K) L' k* \- C: W$ h- F HTTP网络请求参数HTTP网络请求一般会有下面四个常用参数:endpoint - 这是客户端用于与服务器通信的URLmethod - 它告诉服务器客户端想要执行什么操作最常用的方法有GET、POST、PUT、DELETE和PATCH。 1 R y, S' f, x
header - 用于在服务器和客户端之间传递附加信息,如授权body - 发送到服务器的数据curl 用法最基本的用法像下面这样curl[options][URL...]其中 options 部分一般常用的有:。 0 v- c3 E' c2 w
-X, --request - 请求方法-i, --include - 包含响应体的header-d, --data - 发送的数据-H, --header - 额外的头信息HTTP GET 请求GET 是 curl 默认的请求方式,用于从服务器获取指定的资源。 ! s- {' H& S1 G3 }; G3 O0 t$ r
比如从目标服务器获取内容:curl https://example.com/posts或者根据需要传递 query string 查询参数:curl https://example.com/post?id=4820 ! t* H6 A7 s( G: q# Z3 [1 f
HTTP POST 请求一般用于把数据推送给服务器用于更新操作传递的参数体(form-data)使用 -d 选项指定:curl -X POST -d "userId=5&title=Hello World&body=Post body."。
3 a$ `5 t _( u% [- v https://example.com/posts因为是表单提交,传送给服务器的数据体有可能很大,需要经过编码分块后传输,那么此时需要在头部指定类型比如 curl 默认使用 Content-Type: 。
8 f) h/ |; Y9 {2 c2 X application/x-www-form-urlencoded 头部编码方式所有的数据会使用 urlencode 进行编码如果我们传递的是一个 json 结构体的字符串,可以手动指定:curl -X POST -H 。 # j, [ P L- v
"Content-Type: application/json" -d {"userId": 5, "title": "Hello World", "body": "Post body."} https:
1 }' I1 w0 X7 u //example.com/postsHTTP PUT 请求一般用于更新服务器上的数据,或者替换已存在数据这是约定俗成的一种做法比如下面的例子,更新指定 post_id = 5 的数据:curl -X PUT -d 。
- p, Y8 S$ Q2 b8 p+ ^! N* ~ "userId=5&title=Hello World&body=Post body." https://example.com/posts/5HTTP PATCH 请求上一节中的 PUT 请求,更新整体数据。 0 P6 |& S8 E1 b o% a+ N
如果仅是更新一条数据的某个字段,或一部分字段,可以选用 PATCH 方式:curl -X PATCH -d "title=Hello Universe" https://example./posts/5
, B7 y# @6 G* L1 t/ p8 e HTTP DELETE 请求增删改查就剩下删除没说了,当然是用 DELETE 方法从服务器移除已存在的资源curl -X DELETE https://example.com/posts/5授权访问如果API端点需要身份验证,则需要获取访问密钥。
$ Z& ^/ C7 G# \6 z, b" t# O 否则,API服务器将以“禁止访问”或“未经授权”的响应消息进行响应获取访问密钥的过程取决于使用的API一旦拿到授权 token,就可以像下面这样请求:curl -X GET -H "Authorization: Bearer {ACCESS_TOKEN}" + T- l8 s8 U6 B! w7 {! S
"https://api.server.io/posts"写在最后如果大家调试过微信公众号,应该对上面所使用的方法以及授权过程不会陌生这是行业惯例以及API最佳实践使用 curl 的好处是我们可以随心所欲地随时调试,而不必构建一套程序。 $ ~ t0 r" Z7 r* q$ p l' d1 c
Happy coding :_)我是 @程序员小助手 ,持续分享编程知识,欢迎关注。
! z) q% e2 A2 `% a$ s4 b2 q8 ^ i
- N: N+ w) H/ P* V4 |8 }
2 W/ y" ?; f$ T1 F& v! W& g9 u$ F
0 H* m" e/ x7 f/ k- e |