在Spring的休息控制器(用@RestController标记)中,函数可以返回模型对象和ResponseEntity对象,哪个更好?

时间:2017-01-25 09:31:37

标签: rest spring-boot spring-restcontroller

作为一个Spring Boot noob,我只知道在控制器类中,它的公共函数可以返回模型对象和ResponseEntity对象。像

这样的东西
public List<Book> getBooks() {}

public ResponseEntity<Book> getBooks() {}

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

2 个答案:

答案 0 :(得分:1)

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

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

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

HttpStatus.CONFLICT
HttpStatus.CREATED

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

HTTP Status Codes

答案 1 :(得分:0)

只是为了了解@lbpeppers提到的内容。使用ResponseEntity有许多优点  1.如果状态代码类似于400或404,客户端无需查看消息正文,这非常有用  2.在某些情况下,客户对身体不感兴趣。它所需要的只是操作的状态
 3. HttpStatus calss中有很多方便的方法,如is1xxInformationalis2xxSuccessfulis3xxRedirectionis4xxClientErroris5xxServerError,可以像

response.getStatusCode().is2xxSuccessful()