HTTP状态码后端缓存
🧭 分类速览
- 1xx 信息:请求已接收,继续处理(少用)
- 2xx 成功:
200 OK、201 Created、204 No Content - 3xx 重定向:
301/308 永久、302/307 临时、304 Not Modified - 4xx 客户端错误:
400、401、403、404、422 - 5xx 服务器错误:
500、502、503、504
🔁 重定向正确用法
| 场景 | 推荐 |
|---|---|
| 资源永久迁移 | 301(或308,保持方法不变) |
| 临时跳转 | 302(或307,保持方法不变) |
| 条件缓存命中 | 304 |
301/302 在历史实现里可能将 POST 变为 GET;若需严格保持动词,请使用 307/308。
🧩 条件请求与缓存
If-None-Match: "etag-value" // 命中返回 304
If-Modified-Since: Tue, 10 Oct 2025 07:28:00 GMT
后端生成 ETag/Last-Modified,命中返回 304 可大幅节省带宽与TTFB。
🧱 错误码与幂等
- 400:参数无效;422:语义正确但处理失败(如业务校验)。
- 401:未认证;403:已认证但无权限。
- 404:资源不存在;410:资源已删除。
- 幂等接口设计:重复请求不应造成副作用(PUT/DELETE天生幂等)。
🔒 安全与SEO
- 登录跳转:未登录返回 401 而不是 200 + 登录页HTML。
- SEO 友好:移动或删除内容,请返回对应 301/404/410。
🧪 常见后端示例
// Node.js/Express
app.post('/items', (req, res) => {
const created = createItem(req.body);
res.status(201).set('Location', `/items/${created.id}`).json(created);
});
app.get('/items/:id', (req, res) => {
const item = getItem(req.params.id);
if (!item) return res.status(404).send();
res.json(item);
});
🔗 相关工具
需要快速查询状态码语义与分类?试试 HTTP状态码大全,支持搜索与分组浏览。