2014-03-28 146 views
33

我有一个简单的处理器在我的控制器,它返回一个消息ResponseEntity <T>和@ResponseBody之间有什么区别?

@RequestMapping(value = "/message") 
@ResponseBody 
public Message get() { 
    return new Message(penguinCounter.incrementAndGet() + " penguin!"); 
} 

同时我可以用这样的

@RequestMapping(value = "/message") 
ResponseEntity<Message> get() { 
    Message message = new Message(penguinCounter.incrementAndGet() + " penguin!"); 
    return new ResponseEntity<Message>(message, HttpStatus.OK); 
} 

是什么betweet这两种方法的区别?我们不考虑HttpStatus :)

回答

35

ResponseEntity将为您定义任意HTTP响应标头提供一些额外的灵活性。见第4构造函数在这里:

http://docs.spring.io/spring/docs/3.0.x/api/org/springframework/http/ResponseEntity.html

ResponseEntity(T body, MultiValueMap<String,String> headers, HttpStatus statusCode) 

可能的HTTP响应标题的列表,请访问:

http://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Responses

一些常用的有状态,Content-Type和缓存控制。

如果您不需要,使用@ResponseBody将会更简洁一点。

+1

什么东西在标头中传输?任何例子? – Flavio

相关问题