【Spring Boot 中 ResponseEntity 用法全解析】
·
ResponseEntity
🌟 Spring Boot 中 ResponseEntity 用法全解析(含 body() 与 ok() 区别)
在 Spring Boot 开发 REST 接口时,经常会看到:
ResponseEntity.ok(user);
ResponseEntity.created(uri).body(user);
ResponseEntity.notFound().build();
很多人疑惑:
.body()必须传参数吗?.body(user)和.ok(user)有什么区别?created(uri)里的参数到底是什么?
这篇文章直接讲重点。
一、常用方法含义一览
✅ 1. ok()
ResponseEntity.ok(user);
表示:操作成功,并返回数据
✅ 2. notFound()
ResponseEntity.notFound().build();
表示:资源不存在
✅ 3. badRequest()
ResponseEntity.badRequest().body("参数错误");
表示:请求参数错误
✅ 4. noContent()
ResponseEntity.noContent().build();
表示:操作成功,但不返回数据
✅ 5. internalServerError()
ResponseEntity.internalServerError().body("服务器异常");
表示:服务器内部异常
二、重点:created(URI) 讲清楚
ResponseEntity.created(uri).body(user);
表示:新资源创建成功
🔹 created() 里面必须传什么?
方法定义:
created(URI location)
必须传入一个:
java.net.URI
这个 URI 表示:
新创建资源的访问地址。
🔹 示例
User user = new User(10L, "Lucy", 20);
URI uri = URI.create("/user/10");
return ResponseEntity.created(uri).body(user);
含义:
- 新用户 ID 是 10
- 以后可以通过
/user/10访问 - 同时把 user 对象返回
🔹 为什么必须传 URI?
因为 REST 规范中:
创建成功时,应告知客户端新资源的位置。
所以 created() 必须指定访问路径。
三、.body() 是干什么的?
.body(data)
作用:
设置返回的数据。
🔹 是否可以不传参数?
方法签名是:
.body(T body)
必须传参数。
如果不想返回数据,不要调用 .body(),
而是调用:
.build();
四、.body(user) 和 .ok(user) 的区别
这是很多人最困惑的地方。
写法一
ResponseEntity.ok(user);
等价于:
ResponseEntity.status(200).body(user);
这是一个快捷方法。
写法二
ResponseEntity.status(200).body(user);
这是完整写法。
核心结论
ResponseEntity.ok(user)
本质就是:
ResponseEntity.status(200).body(user)
只是语法更简洁。
那为什么 created() 还要再调用 body()?
因为:
ResponseEntity.created(uri)
只设置了“创建成功”状态,
它还没有设置返回数据,
所以必须再调用:
.body(user)
五、终极理解总结
有数据返回:
ResponseEntity.ok(data);
ResponseEntity.created(uri).body(data);
ResponseEntity.badRequest().body(msg);
无数据返回:
ResponseEntity.notFound().build();
ResponseEntity.noContent().build();
🎯 一句话记住
.body()→ 设置返回数据.build()→ 不返回数据.ok(data)→ 等价于status(200).body(data).created(uri)→ 只设置状态,必须再.body()或.build()
更多推荐



所有评论(0)