在前后端分离的开发模式下,接口交互是核心环节。很多开发者常遇到这样的困惑:为什么有的接口用 GET 能通,POST 却报错?PUT、DELETE 和 PATCH 到底该怎么选?其实这背后是 HTTP 协议规范与业务场景的匹配问题。
HTTP 基础与常见方法
HTTP(HyperText Transfer Protocol)是浏览器与服务器通信的规则。理解不同请求方法的语义,有助于写出更规范的代码。
| 方法 | 作用 | 是否修改数据 |
|---|---|---|
| GET | 获取数据 | 否 |
| POST | 提交数据 | 是 |
| PUT | 更新数据(整体替换) | 是 |
| PATCH | 局部更新 | 是 |
| DELETE | 删除数据 | 是 |
| HEAD | 只获取响应头 | 否 |
| OPTIONS | 查询支持的请求方式 | 否 |
GET 请求:查询的首选
GET 主要用于获取资源。它的参数直接拼接在 URL 后面,例如 axios.get('/api/user/list', {params: {page: 1, pageSize: 10}}) 会生成 GET /api/user/list?page=1&pageSize=10。
特点:
- 参数暴露在 URL 中,容易被记录或分享
- 支持缓存,适合重复查询
- 幂等性高,多次请求结果一致
适用场景: 查询列表、详情、分页数据等不改变服务器状态的操作。
POST 请求:提交与创建
POST 用于向服务器提交数据,通常放在请求体(Body)中。比如登录接口 axios.post('/api/user/login', {username: 'admin', password: '123456'}),密码不会出现在地址栏。
特点:
- 数据在 Body 中,相对安全
- 默认不缓存
- 常用于创建新资源
适用场景: 登录注册、表单提交、创建资源以及复杂条件的查询。
PUT、PATCH 与 DELETE
除了基础的增删改查,RESTful 风格还定义了更细粒度的操作:
- PUT:整体更新。例如
axios.put('/api/user', {id: 1, name: '张三'}),通常要求客户端提供完整资源信息。 - PATCH:局部更新。如
axios.patch('/api/user/1', {phone: '999999'}),只修改指定字段,效率更高。 - DELETE:删除资源。通过 ID 定位并移除,如
axios.delete('/api/user', {params: {id: 1}})。
GET 与 POST 的核心差异
| 对比项 | GET | POST |
|---|---|---|
| 参数位置 | URL |


