PUT用于完整替换资源,需指定含ID的URL、设置Content-Type头、JSON.stringify后传body;DELETE用于删除资源,通常仅需含ID的URL和method选项,不带body。

Fetch 发送 PUT 和 DELETE 请求,关键在于正确设置 method 选项,并根据需要配置 headers 和 body(尤其是 PUT 通常要带数据)。
PUT 请求:更新资源,记得带 body
PUT 用于完整替换某个资源,服务器通常期望你提供完整的更新数据。必须设置 Content-Type,并把数据序列化(如 JSON)后放进 body。
- 用
JSON.stringify()把对象转成字符串 - 手动设置
headers: { 'Content-Type': 'application/json' } - URL 中包含目标资源的唯一标识(比如
/api/users/123)
示例:
fetch('/api/posts/5', {method: 'PUT',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
title: '新标题',
content: '更新后的内容'
})
});
DELETE 请求:一般不带 body,但 URL 要准确
DELETE 是幂等操作,语义上是“删除指定资源”,绝大多数 API 只靠 URL 路径识别目标,不需要传 body。但要注意:有些后端可能要求带空 body 或特定 header,不过标准做法是省略 body。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
- 只需设置
method: 'DELETE' - 确保 URL 包含要删除的资源 ID(如
/api/todos/7) - 如果后端要求认证,记得加
Authorizationheader
示例:
fetch('/api/comments/42', {method: 'DELETE',
headers: {
'Authorization': 'Bearer abc123'
}
});
常见坑点提醒
-
CORS 预检问题:PUT/DELETE 属于非简单请求,浏览器会先发 OPTIONS 预检。确保后端正确响应预检(返回 204 或 200,并带上
Access-Control-Allow-Methods等头) - JSON body 忘记 stringify:直接传对象会报错,Fetch 的 body 只接受字符串、Blob、FormData 等,不接受普通对象
-
没处理响应状态:Fetch 不会因 HTTP 错误码(如 404、500)自动 reject,要用
response.ok或response.status手动判断
附:带错误处理的完整写法
实际项目中建议封装或至少检查响应:
fetch('/api/items/99', {method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name: '修改后的名称' })
})
.then(res => {
if (!res.ok) throw new Error(`HTTP ${res.status}`);
return res.json();
})
.then(data => console.log('更新成功:', data))
.catch(err => console.error('请求失败:', err));

















