2012-01-24 19 views
2

使用Spring時,如果要返回JSON和XML,那麼最佳做法是什麼?使用什麼策略來確定JSON或XML?

說我有一個方法:

@RequestMapping(value="items/{id}", method = RequestMethod.GET) 
public Item getItem(@PathVariable, Long id) { 
    // Find and return item. 
} 

我怎麼能調用這個在類似的風格: localhost:8080/app-name/items/1.xmllocalhost:8080/app-name/items/1.json並獲得各自格式的數據?

+4

你還是使用基於'Accept' HTTP頭內容協商方法。這意味着要做到這一點。 –

+1

我同意Peter的觀點,做一些比較RESTful的事情會比通過擴展強制響應格式更好。 – aweigold

+0

謝謝,你們倆。但是,有一個問題不是'URI'中的擴展名使它更具**代表性**,因爲它顯示了*你正在獲得什麼*它*只是好奇。 :) – whirlwin

回答

3

這是Spring文檔here討論。

  1. 您可以使用兩個單獨的URL來確定類型返回

  2. 可以使用接受頭。但是,從瀏覽器中無法設置接受標頭。因此使用單獨的URL可以提供更多控制。

4

最明顯的解決方案:

@RequestMapping(value="items/{id}.{format}", method = RequestMethod.GET) 
public Item getItem(@PathVariable, Long id, String format) { 
    if(format.equals("xml")) 
... 
} 
3

@ResponseBody使用,並確保你有HttpMessageConverters與你的HandlerAdapter可與JSON和XML MIME類型處理物件項目註冊。這也使您可以避免複製返回相同項目的控制器,並讓代碼更簡單,便於維護和測試。

,瞭解更多信息請參閱本: http://www.ibm.com/developerworks/web/library/wa-restful/

相關問題