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);
}</user>
DELETE 接口:删除资源(ID 通常从路径或查询参数获取)
DELETE 用于移除指定资源,最常见的是通过路径变量传 ID;少量场景用查询参数(如批量删需多个 ID,但更推荐 POST + 请求体)。
- 路径变量方式最标准:
/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();
}
}</void>
注意事项与常见问题
-
路径设计要一致: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
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











