Fetch 发送 PATCH 请求需显式设置 method 为 "PATCH" 并指定 Content-Type: application/json,请求体用 JSON.stringify() 序列化,带认证时添加 Authorization header,响应需检查 status 和 ok 属性,204 状态不解析 JSON。

Fetch 发送 PATCH 请求和发送 POST 或 PUT 类似,关键是正确设置 method 为 "PATCH",并确保请求头(特别是 Content-Type)与后端期望的一致。
明确指定 method 和 Content-Type
PATCH 不是默认方法,必须显式声明;多数 REST API 接收 JSON 数据,所以通常要设 Content-Type: application/json:
-
method: "PATCH" —— 必须小写字符串,不能写成
Patch或patch -
headers 中带上
{"Content-Type": "application/json"},否则后端可能无法解析请求体 - 请求体用
JSON.stringify()转成字符串,再传给body选项
带认证或自定义 Header 的情况
如果接口需要登录态(比如 Bearer Token),记得把 token 加到 headers 里:
- 常见做法是读取 localStorage 或变量中的 token
- header 示例:
{"Authorization": "Bearer abc123", "Content-Type": "application/json"} - 注意:token 过期会导致 401,建议配合错误处理统一拦截
处理响应和错误
PATCH 成功时一般返回 200 或 204,但也要检查 response.ok 或状态码,避免只靠 then 链:
立即学习“Java免费学习笔记(深入)”;
- 用
if (!response.ok) throw new Error(...)主动抛错 - 对 204 响应(无返回体),调用
response.json()会失败,可先判断response.status !== 204 - 捕获网络错误(如离线)和业务错误(如 400、404)需分开处理
完整示例代码
修改用户邮箱的典型 PATCH 请求:
fetch("/api/users/123", {
method: "PATCH",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
},
body: JSON.stringify({ email: "new@example.com" })
})
.then(res => {
if (!res.ok) throw new Error(`HTTP ${res.status}`);
return res.status === 204 ? null : res.json();
})
.then(data => console.log("更新成功", data))
.catch(err => console.error("更新失败", err));


















