必会基础
HTTP方法:GET、POST、PUT、PATCH、DELETE
一句话定义
HTTP方法表达你对资源的操作意图:GET读取,POST创建或执行动作,PUT全量替换,PATCH局部修改,DELETE删除。
javascript
// GET 查询
const list = await fetch('/api/users').then(r => r.json());
// POST 创建,请求体通常用 JSON
await fetch('/api/users', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name: 'Ming' })
});
// PUT 全量更新(需提供所有字段,否则丢失)
await fetch('/api/users/1', {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ id:1, name:'Ming', email:'m@x.com' })
});
// PATCH 部分更新(只传要改的字段)
await fetch('/api/users/1', {
method: 'PATCH',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name: 'NewName' })
});
// DELETE 删除
await fetch('/api/users/1', { method: 'DELETE' });
典型场景
- RESTful API 设计:用标准方法让接口语义自解释。
- 批量操作或非 CRUD 动作(如转账)可统一使用 POST + 动作词(例
/api/transfer)。
边界提醒
- GET 请求不要加 body:虽然规范未绝对禁止,但浏览器、CDN、服务端可能直接忽略或拒绝,导致调试困难。
- POST 不幂等:用户连续点击"提交"按钮可能创建多条重复数据,前端需做防重(如按钮 loading)。
- PUT 必须传递完整资源,否则缺失字段会被重置;部分更新请用 PATCH,或者使用 POST 加字段控制。
原理/细节
安全性(不修改资源)与幂等性(多次请求结果相同)是方法选择的重要依据:GET 安全且幂等,POST 既不安全也不幂等,PUT/DELETE 幂等但不安全。