GET/HEAD/POST/PUT全解:http_study带你完整拆解HTTP请求方法与请求行

📅 2026/8/22 13:43:50
GET/HEAD/POST/PUT全解:http_study带你完整拆解HTTP请求方法与请求行
GET/HEAD/POST/PUT全解http_study带你完整拆解HTTP请求方法与请求行【免费下载链接】http_studyfollow me to study http项目地址: https://gitcode.com/gh_mirrors/ht/http_studyhttp_study 是《透视HTTP协议》的配套实战项目基于 OpenResty Lua 示例环境搭建。这篇文章带你完整拆解 HTTP 四大常用请求方法 GET、HEAD、POST、PUT并逐字段读懂 HTTP 请求行的格式新手 5 分钟即可动手上手。什么是请求行HTTP 请求的第一行格式速览每个 HTTP 请求的开头都有一条请求行Request Line由三部分以空格分隔组成GET /11-1 HTTP/1.1方法Method对资源要执行的操作最常见的是 GET、HEAD、POST、PUT请求 URIRequest-URI标识要操作的资源包含路径和查询参数协议版本HTTP Version客户端使用的 HTTP 版本记住这条格式你就拿到了读懂一切 HTTP 请求的钥匙 。三步快速开始搭建 http_study 实战环境第 1 步克隆仓库git clone https://gitcode.com/gh_mirrors/ht/http_study第 2 步将仓库内hosts文件中的域名映射如www.chrono.com、origin.io指向 127.0.0.1添加到系统的/etc/hosts。第 3 步启动服务cd http_study/www ./run.sh start 也可以直接使用项目提供的 Docker 镜像参见仓库README.md的 Docker 部分。GET vs HEAD为什么 HEAD 不返回响应体项目示例www/lua/10-1.lua只接受 GET 和 HEAD 两种方法local method ngx.req.get_method() if method ~ GET and method ~ HEAD then ngx.exit(405) end动手试一下curl -i http://127.0.0.1/10-1 # GET返回完整响应体 curl -I http://127.0.0.1/10-1 # HEAD大写 -I只有响应头没有响应体你会观察到两个关键点方法不是 GET/HEAD 时服务器返回405 Method Not AllowedHEAD 的Content-Length与对应 GET 相同但响应体为空——HEAD 常用来低成本探测资源状态POST vs PUT最容易搞混的一对方法www/lua/10-2.lua只接受 POST 和 PUT并把请求体原样回显curl -X POST -d hello http://127.0.0.1/10-2 curl -X PUT -d hello http://127.0.0.1/10-2 curl -X DELETE http://127.0.0.1/10-2 # 返回 405两者区别一句话说清方法语义幂等性POST提交数据通常创建资源非幂等重复提交可能产生多条数据PUT更新/替换指定资源幂等重复执行结果一致它们通常都携带请求体Body所以示例会先读取 body 再处理。拆解请求行的每个字段scheme、host、path、query访问/11-1示例对应源码www/lua/11-1.lua它会输出 URI 的完整分解curl http://127.0.0.1/11-1?code200http://127.0.0.1:80/11-1?code200 scheme http host 127.0.0.1 port 80 path /11-1 query code200对照 URI 标准形式scheme://host:port/path?query一目了然。注意一个容易忽略的细节请求行里只写path?query而 scheme 和 host 是由Host请求头携带的——这正是 HTTP/1.1 虚拟主机的基础。用 Wireshark 看到真实的请求行光靠 curl 还不够仓库的wireshark/目录提供了现成的.pcapng抓包文件。用 Wireshark 打开wireshark/08-1.pcapng或wireshark/08-2.pcapng就能看到请求行在网络上真实的字节流理论立刻落地 。四大请求方法速查表方法有请求体幂等典型用途GET否✅获取资源HEAD否✅只取响应头探测资源状态POST是❌提交/创建数据PUT是✅更新/替换资源 除这四种外HTTP 还有 OPTIONS、DELETE、PATCH 等方法可结合示例www/lua/12-1.lua状态码实验继续探索。学习路线小结先跑通www/lua/10-1.luaGET/HEAD与www/lua/10-2.luaPOST/PUT两个示例感受 405 与请求体的差异用www/lua/11-1.lua拆解 URI 各字段理解请求行的完整结构打开wireshark/08-1.pcapng抓包对照真实报文加深印象项目里所有/数字形式的 URL 都会自动路由到lua/数字.lua文件这条规则定义在www/conf/http/servers/locations.inc中——想深入阅读路由逻辑时从这里切入即可。【免费下载链接】http_studyfollow me to study http项目地址: https://gitcode.com/gh_mirrors/ht/http_study创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考