打开浏览器,输入网址,点下回车——这看似简单的动作背后,其实已经悄悄发出了一个 HTTP 请求。HTTP 协议定义了客户端和服务器之间如何通信,而“请求方式”(也叫请求方法或 HTTP 方法)就是告诉服务器:你想干啥。
最常用的两种:GET 和 POST
日常上网,你几乎天天在用它们。
GET 是用来“取数据”的。比如搜索关键词、刷新新闻列表、查看商品详情页。它的特点是:参数会拼在 URL 后面,像这样:
https://example.com/search?q=手机&page=1所以 GET 请求有长度限制(URL 长度受浏览器和服务器约束),也不适合传敏感信息(密码、token 之类)——毕竟地址栏里全写着呢。
POST 则更常用于“提交数据”,比如登录表单、发评论、上传文件。参数放在请求体(body)里,不会暴露在 URL 中,能传的数据量也大得多。
其他实用但容易被忽略的请求方式
HTTP/1.1 规范里一共定义了 8 种标准方法,除了 GET 和 POST,还有这些:
PUT:覆盖式更新资源
想把某个用户资料整个替换成新内容,就用 PUT。它强调“幂等性”——发一次和发十次效果一样,服务器只保留最后一次提交的数据。
PUT /api/users/123
Content-Type: application/json
{"name": "张三", "email": "zhang@example.com"}DELETE:删掉一个资源
顾名思义,就是删除指定资源。比如删一条评论、下架一个商品。
DELETE /api/comments/456注意:DELETE 不等于“撤回操作”,它通常不可逆,就像微信删好友——删了就没了。
PATCH:局部修改资源
和 PUT 不同,PATCH 只改你需要变的部分。比如只想改用户头像,不用把姓名、邮箱、生日全再提交一遍。
PATCH /api/users/123
Content-Type: application/json
{"avatar_url": "https://cdn.example.com/123.jpg"}HEAD:只拿响应头,不要正文
跟 GET 几乎一样,但服务器不返回 body,只返回状态码和响应头。常用于检查链接是否有效、判断资源有没有更新(比对 Last-Modified 或 ETag),省流量又快。
OPTIONS:问服务器“你能干啥?”
发起跨域请求前,浏览器会先发个 OPTIONS 请求(预检请求),看看目标服务器是否允许当前域名、请求方法、请求头等。相当于敲门问:“我能进来吗?带啥东西可以进?”
TRACE 和 CONNECT:特殊场景才用
TRACE 主要用于诊断,把请求原样返回,方便排查中间代理是否篡改了内容;CONNECT 则用于建立隧道,比如 HTTPS 代理或 WebSocket 升级过程。普通网页开发基本碰不到。
另外,有些框架或 API 会扩展自定义方法(比如 SEARCH),但它们不属于 HTTP 标准,兼容性需谨慎对待。
说到底,选哪种请求方式,不是看“能不能用”,而是看“语义对不对”。GET 就该是安全、可缓存、无副作用的查询;POST 表示创建或触发动作;PUT/PATCH/DELETE 分别对应更新和删除——用对了,接口才好理解、好维护、好调试。