@DeleteMapping 是 Spring MVC 中映射 HTTP DELETE 请求的注解,用于删除资源,支持路径变量、查询参数、请求头校验及批量删除(需谨慎),推荐返回 ResponseEntity 并添加日志、事务、限流与权限控制。

@DeleteMapping 是 Spring MVC 提供的注解,用于将 HTTP DELETE 请求映射到控制器方法,常用于删除资源(如数据库记录、文件等)。它本质是 @RequestMapping(method = RequestMethod.DELETE) 的快捷写法,语义更清晰、代码更简洁。
基础用法:绑定路径并接收路径变量
最常见场景是根据 ID 删除单个资源,ID 通常通过 URL 路径传递:
@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();
}
}
-
@PathVariable用于提取 URL 中的动态段(如/users/123中的123) - 建议返回
ResponseEntity,便于控制 HTTP 状态码(如 200 成功、404 未找到) - 不要在 DELETE 接口中修改请求体(body),REST 规范中 DELETE 一般不带 body;如需复杂条件,改用 POST 或 Query 参数
支持请求参数和请求头校验
可通过 @RequestParam 接收查询参数,或用 @RequestHeader 校验权限、版本等信息:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
@DeleteMapping("/orders/{orderId}")
public ResponseEntity<Void> cancelOrder(
@PathVariable String orderId,
@RequestParam(required = false) String reason,
@RequestHeader("X-Api-Version") String version) {
if (!"v2".equals(version)) {
return ResponseEntity.status(400).build();
}
orderService.cancel(orderId, reason);
return ResponseEntity.noContent().build();
}
-
@RequestParam适合传递可选的业务参数(如删除原因、是否级联) -
@RequestHeader可用于接口版本控制、鉴权(如 token 验证)、幂等性校验(如X-Idempotency-Key) - 敏感操作建议添加日志记录或事务回滚机制
批量删除:用请求体传 ID 列表(需谨慎)
标准 REST 不鼓励 DELETE 带 body,但某些场景(如前端一次性删多个)可接受。Spring 允许用 @RequestBody 解析 JSON:
立即学习“Java免费学习笔记(深入)”;
@DeleteMapping("/products/batch")
public ResponseEntity<Integer> deleteProducts(@RequestBody List<Long> ids) {
int count = productService.deleteBatch(ids);
return ResponseEntity.ok(count);
}
- 需在配置中确保消息转换器(如
Jackson2ObjectMapperBuilder)支持 JSON 解析 - 前端发送时 Content-Type 必须为
application/json - 生产环境建议加限流(如最多一次删 100 条)和权限校验(如仅管理员可用)

















