地址说“操作谁”,方法说“做什么”
一个留言 API 可以这样设计
text
GET /api/messages 读取留言列表
POST /api/messages 创建一条新留言
GET /api/messages/42 读取 ID 42
PATCH /api/messages/42 修改 ID 42 的部分字段
DELETE /api/messages/42 删除 ID 42messages 是资源名称,42 是具体记录 ID。
GET:读取
ts
fetch('/api/messages')常见响应:
json
[
{ "id": 41, "text": "早上好" },
{ "id": 42, "text": "你好" }
]GET 通常不应该因为刷新列表而创建或删除数据。
POST:创建或执行动作
ts
fetch('/api/messages', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ text: '你好' })
})常见成功状态码是 201。
PUT 和 PATCH:更新
PUT
通常表示用完整新内容替换资源。
PATCH
通常表示只修改提供的字段。
ts
fetch('/api/messages/42', {
method: 'PATCH',
body: JSON.stringify({ text: '修改后的留言' })
})真实 API 可能有自己的约定,先看文档,不要只凭方法名称猜。
DELETE:删除
ts
fetch('/api/messages/42', { method: 'DELETE' })后端必须检查:当前用户是否拥有这条留言,而不是只要知道 ID 就能删除。
Request 包含什么
text
URL 请求地址
Method GET、POST 等动作
Headers 内容格式、身份凭证等说明
Query 地址问号后的筛选参数
Body POST/PATCH 常发送的数据例如:
text
GET /api/messages?page=2&limit=20page 和 limit 是 Query 参数。
Response 包含什么
text
Status 请求结果类别
Headers 响应格式、缓存等说明
Body JSON 数据或错误信息状态码具体怎么用
text
200 成功读取或更新
201 成功创建
204 成功但没有响应正文
400 请求数据不符合要求
401 没有有效登录身份
403 有身份,但没有权限
404 路由或资源不存在
409 当前数据状态发生冲突
429 请求过快或额度受限
500 后端内部处理失败错误响应最好提供可操作信息:
json
{
"error": "MESSAGE_TOO_LONG",
"message": "留言最多 500 个字符"
}REST 是什么
REST 是组织 HTTP API 的一种常见风格,不是需要安装的软件。
它鼓励用资源地址和标准方法表达操作,让人看到 DELETE /api/messages/42 就能大致判断意图。
项目不完全符合 REST 也不等于不能运行。重点是前后端约定清楚并保持一致。
用 Network 排查 API
- 点击失败请求。
- Headers 看 URL、Method、Status。
- Payload 看实际发送内容。
- Response 看后端具体说明。
- 500 再转向后端日志。
前端发送 GET /api/messages,但后端只定义了 POST /api/messages。地址相同就一定能匹配吗?
答案:不能。路由通常同时匹配地址和 HTTP 方法,方法不同可能得到 404 或 405。