HTTP 常见请求方法和状态码有哪些?
请求方法
| 方法 | 说明 | 幂等 | 安全 |
|---|---|---|---|
| GET | 获取资源 | ✅ | ✅ |
| POST | 创建资源 | ❌ | ❌ |
| PUT | 完整更新资源 | ✅ | ❌ |
| PATCH | 部分更新资源 | ❌ | ❌ |
| DELETE | 删除资源 | ✅ | ❌ |
| HEAD | 获取头信息(无响应体) | ✅ | ✅ |
| OPTIONS | 预检请求(CORS) | ✅ | ✅ |
幂等:多次执行结果相同(GET 请求多次结果一致)
安全:不修改服务器数据
GET vs POST
| 特性 | GET | POST |
|---|---|---|
| 参数位置 | URL query | 请求体 |
| 长度限制 | 浏览器有限制(~2KB) | 无限制 |
| 缓存 | ✅ 可缓存 | ❌ 默认不缓存 |
| 幂等 | ✅ | ❌ |
| 浏览器历史 | ✅ 保留 | ❌ |
| 书签 | ✅ 可收藏 | ❌ |
| 编码 | URL 编码 | 多种(form-data、json) |
状态码
1xx 信息:
- 100 Continue — 继续发送请求体
2xx 成功:
- 200 OK — 请求成功
- 201 Created — 资源创建成功
- 204 No Content — 成功但无返回内容
3xx 重定向:
- 301 Moved Permanently — 永久重定向(缓存)
- 302 Found — 临时重定向(不缓存)
- 304 Not Modified — 资源未修改(使用缓存)
4xx 客户端错误:
- 400 Bad Request — 请求格式错误
- 401 Unauthorized — 未认证(需要登录)
- 403 Forbidden — 无权限
- 404 Not Found — 资源不存在
- 405 Method Not Allowed — 方法不允许
- 429 Too Many Requests — 请求频率超限
5xx 服务器错误:
- 500 Internal Server Error — 服务器内部错误
- 502 Bad Gateway — 网关错误
- 503 Service Unavailable — 服务不可用
- 504 Gateway Timeout — 网关超时
301 vs 302
- 301:永久重定向,浏览器会缓存,下次直接跳转新地址。SEO 权重转移到新 URL
- 302:临时重定向,每次都请求原地址。SEO 权重不转移
RESTful API 设计
GET /users # 获取用户列表
GET /users/:id # 获取单个用户
POST /users # 创建用户
PUT /users/:id # 更新用户(全量)
PATCH /users/:id # 更新用户(部分)
DELETE /users/:id # 删除用户