在Spring的rest controller(标有@RestController)中,函数可以return既是模型对象又是ResponseEntity对象,哪个更好?

In Spring's rest controller (marked with @RestController), functions can return both model objects and a ResponseEntity object, which is better?

作为一个Spring Boot 菜鸟,我只知道在控制器class 中,它的public 函数可以return 模型对象和ResponseEntity 对象。像

public List<Book> getBooks() {}

public ResponseEntity<Book> getBooks() {}

但我的问题是,当有多个选择时,哪个更好?

基本上,如果您使用 ResponseEntity,除了对象本身的内容之外,您还可以控制 HTTP 响应状态。

public ResponseEntity<Object> getObject() {
  return new ResponseEntity<Object>(object, Httpstatus.OK);
}

例如,如果您需要在执行任何操作之前验证请求中的一些数据,并且您希望通过 HTTP 状态代码让您的客户端知道发生了什么,您可以在不同的选项之间进行选择。

HttpStatus.CONFLICT
HttpStatus.CREATED

在这里您可以查看不同的状态代码:

HTTP Status Codes

只是为了更清楚地说明@lbpeppers 提到的内容。使用 ResponseEntity 有很多优点。
1. 如果状态码是400或404之类的,客户端不需要查看消息的body,这很有帮助
2. 在某些情况下,客户对 body 不感兴趣。它所需要的只是操作的状态
3. HttpStatus calss中有很多方便的方法,如is1xxInformationalis2xxSuccessfulis3xxRedirectionis4xxClientErroris5xxServerError,可以像[=16]一样使用=]

response.getStatusCode().is2xxSuccessful()