Java中编写PUT和DELETE接口需用@PutMapping和@DeleteMapping注解,路径变量标识资源,PUT用@RequestBody传DTO实现幂等更新并返回200/204,DELETE用@PathVariable删资源并返回200/204或404。

Java 中编写 PUT 和 DELETE 请求对应的 REST 接口,核心是使用 Spring Boot 的 @PutMapping 和 @DeleteMapping 注解,配合合适的参数绑定和业务逻辑处理。关键在于理解请求路径、数据传递方式(URL 路径变量、请求体、查询参数)以及返回规范。
PUT 接口:更新资源(推荐用请求体传完整或部分数据)
PUT 语义是“全量更新”某个资源,通常通过路径标识唯一资源,用 JSON 请求体携带更新字段。
- 路径中用
{id}捕获资源 ID,如/api/users/{id} - 用
@RequestBody接收 JSON 数据(建议封装为 DTO,避免直接操作实体类) - 返回
200 OK(成功)或204 No Content(无响应体),也可返回更新后的对象 - 注意幂等性:多次相同 PUT 应产生相同结果
示例:
@PutMapping("/api/users/{id}")
public ResponseEntity<User> updateUser(
@PathVariable Long id,
@RequestBody UserUpdateDTO updateDTO) {
User updated = userService.updateById(id, updateDTO);
return ResponseEntity.ok(updated);
}
DELETE 接口:删除资源(ID 通常从路径或查询参数获取)
DELETE 用于移除指定资源,最常见的是通过路径变量传 ID;少量场景用查询参数(如批量删需多个 ID,但更推荐 POST + 请求体)。
立即学习“Java免费学习笔记(深入)”;
- 路径变量方式最标准:
/api/users/{id},用@PathVariable - 避免仅用
@RequestParam(如/api/users?id=123),不符合 RESTful 约定 - 成功时返回
200(带响应体,如删除结果)或204(无响应体) - 若资源不存在,建议返回
404 Not Found
示例:
@DeleteMapping("/api/users/{id}")
public ResponseEntity<Void> deleteUser(@PathVariable Long id) {
boolean deleted = userService.deleteById(id);
if (deleted) {
return ResponseEntity.noContent().build();
} else {
return ResponseEntity.notFound().build();
}
}
注意事项与常见问题
-
路径设计要一致:PUT/DELETE 的路径应与 GET/POST 的资源路径对齐,比如用户资源统一用
/api/users/{id} - 不要在 DELETE 中用请求体:HTTP 规范不禁止,但多数客户端(如浏览器、curl 默认)不支持,Spring 也默认忽略,易出错
- 权限与校验不能少:PUT 前校验 ID 是否合法、数据是否为空;DELETE 前确认资源存在、用户有权限
-
事务与异常处理:数据库操作失败时抛出异常,配合
@ControllerAdvice统一返回错误格式(如400 Bad Request)
前端调用小提示(验证用)
用 curl 测试 PUT:
curl -X PUT http://localhost:8080/api/users/5 \
-H "Content-Type: application/json" \
-d '{"name":"Alice","email":"alice@example.com"}'
用 curl 测试 DELETE:
curl -X DELETE http://localhost:8080/api/users/5


















