第一次用 curl:一条命令看懂 HTTP 请求到底在干什么
每个后端工程师的工具箱里都躺着一条命令:curl。它长得不起眼,curl https://example.com 就能把网页抓回来。但第一次加个 -v 参数看它的输出,很多人就懵了:一大串以 > 和 < 开头的行,到底在说什么?
其实 -v 打印的,就是一次 HTTP 请求的"全程录像"。以 > 开头的行,是你的电脑发出去的;以 < 开头的行,是服务器回来的。把这两部分分开看,HTTP 一下子就透明了。
先看发出去的部分。第一行 GET / HTTP/1.1 叫请求行:GET 是动作(我要拿东西),/ 是要拿的路径,HTTP/1.1 是协议版本。接下来几行是请求头,比如 Host: example.com 告诉服务器"我要找的是这个域名"——同一台服务器可能托管着几十个网站,全靠 Host 区分;User-Agent: curl/8.x 则是自报家门,声明"我是 curl"。请求头本质上就是客户端递过去的一张"便签",把上下文交代清楚。
再看回来的部分。第一行 HTTP/1.1 200 OK 叫状态行,200 就是"成了"。然后是一串响应头:Content-Type 告诉你回来的东西是什么类型(text/html 还是 application/json),Content-Length 告诉你有多大。响应头读完,空一行,剩下的就是真正的响应体——网页 HTML、JSON 数据,都在这里。
理解了这个结构,日常调试就有了抓手。接口返回 404?先看请求行里的路径拼对了没有。拿到了数据但乱码?看 Content-Type 是不是和实际内容对不上。请求特别慢?-v 输出里发出去和回来之间的时间差,就是网络加服务器处理的耗时,一目了然。
还有两个常用参数值得记住:-X POST 可以把 GET 换成 POST,-d 'name=a' 则带上请求体,合起来就是一条最简的"提交表单"命令;-H 'Authorization: xxx' 可以手动加请求头,调需要鉴权的接口时天天用。
下次接口调不通,别急着改代码,先 curl -v 看一眼。请求发出去什么样、服务器回来什么样,全写在那几行 > 和 < 里。能读懂一次完整的请求-响应,你就掌握了排查一切 HTTP 问题的通用钥匙。
- 点赞
- 收藏
- 关注作者
评论(0)