REST Spring Java 中 ResponseEntity<> 的返回类型和简单对象(例如 User)有什么区别?

Eld*_*ooz 5 java rest spring

我是 REST 新手,正在使用用户和文章制作简单的 REST 应用程序。我想知道下面两个示例有什么区别:

@GetMapping("/user/{id}")
public User getUserById(PathVariable("id") String id) {
 .....
 return userService.getUserById();
}
Run Code Online (Sandbox Code Playgroud)

@GetMapping("/user/{id}")
public ResponseEntity<User> getUserById(PathVariable("id") String id) {
 .....
  return new ResponseEntity<> ....
}
Run Code Online (Sandbox Code Playgroud)

使用哪一个更好?他们两者之间的主要区别是什么?

Vik*_*tha 5

ResponseEntity 包含作为响应返回的整个 HTTP 响应,这使得可以灵活地添加标头、更改状态代码并对响应执行类似的操作。

另一种方式是像例子中返回用户一样直接发送PJO类,return ResponseEntity.ok(user)这与成功向用户响应用户详细信息有些类似。但如果直接返回 PJO,则无法更改标头、状态代码。

当您需要更改标头或需要根据结果更改状态时,最好使用 ResponseEntity 而不是 PJO。

例如:没有数据时显示未找到即可return ResponseEntity.status(404).body(<-body->)