2014-03-28 200 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

相關問題