@DeleteMapping是Spring MVC中用于映射HTTP DELETE请求的快捷注解,语义清晰、代码简洁,本质为@RequestMapping(method = RequestMethod.DELETE)的特化;常通过@PathVariable接收路径ID或@RequestParam接收批量ID实现资源删除,需遵循幂等性与权限校验。

@DeleteMapping 是 Spring MVC 提供的注解,用于将 HTTP DELETE 请求映射到控制器方法,常用于实现资源删除逻辑。它本质是 @RequestMapping(method = RequestMethod.DELETE) 的快捷写法,语义更清晰、代码更简洁。
基本用法:绑定路径和参数
最常见的是根据路径变量(如 ID)删除单个资源:
- 使用
{id}占位符接收 URL 中的路径参数,配合@PathVariable获取值 - 返回值通常为
void、ResponseEntity<?>或简单状态对象,便于前端判断结果
示例:
<!-- Java -->@DeleteMapping("/users/{id}")
public ResponseEntity<String> deleteUser(@PathVariable Long id) {
boolean deleted = userService.removeById(id);
if (deleted) {
return ResponseEntity.ok("用户已删除");
} else {
return ResponseEntity.notFound().build();
}
}处理批量删除(多个 ID)
DELETE 请求通常不带请求体(虽 HTTP 规范允许),但实际开发中常通过以下方式传多个 ID:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
路径参数数组:如
/users/{id1}/{id2}/{id3}—— 不推荐,灵活性差 -
查询参数:如
DELETE /users?id=1&id=2&id=3,用@RequestParam List<Long> id接收 -
请求体(JSON):需显式配置支持(Spring Boot 2.6+ 默认禁用),并在方法中用
@RequestBody接收对象(如List<Long>或封装类)
推荐使用查询参数方式,语义明确且兼容性好:
@DeleteMapping("/users")
public ResponseEntity<Void> deleteUsers(@RequestParam List<Long> id) {
userService.removeBatchByIds(id);
return ResponseEntity.noContent().build();
}注意 REST 设计规范与安全性
DELETE 应该是幂等的(多次调用效果相同),且不应用于影响非目标资源的操作:
- 避免在 DELETE 方法中执行“软删转硬删”“级联清理日志”等副作用过大的操作,除非业务明确要求
- 务必校验权限,例如当前用户是否有权删除该资源(可用
@PreAuthorize或手动检查) - 建议返回合适的状态码:
200 OK(含响应体)、204 No Content(成功无返回)、404 Not Found(资源不存在)、403 Forbidden(无权限)
前端调用 DELETE 的常见方式
AJAX 请求需显式指定 method 为 DELETE,并注意跨域和认证头:
- Fetch API 示例:
fetch('/api/users/123', { method: 'DELETE', headers: { 'Authorization': 'Bearer xxx' } }) - Axios 示例:
axios.delete('/api/users/123', { headers: { ... } }) - 确保后端 CORS 配置允许 DELETE 方法(如
allowedMethods = ["GET", "POST", "PUT", "DELETE"])

















