2013-05-28 26 views
2

到目前爲止;我們的servlet只用於支持application/json作爲輸出格式。事實上;我們只是返回輸出爲application/json;不管用戶要求什麼:(servlet支持兩種輸出格式的標準做法

我們將繼續;我們將支持多種輸出格式:json/xml等 我想知道;行業慣例是什麼使我們能夠做到這一點? getContentType()HttpServletRequest並返回適當的數據格式?

+3

您正在尋找['Accept' header](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html) –

+0

我使用的大多數Web服務都帶有一個'GET'參數示例:'?format = json'或'?format = xml' –

回答

3

getContentType()返回該請求的Content-Type頭值。這指定HTTP請求的主體的內容,不是內容類型它期待作爲響應。

HTTP請求可以有Accept標頭集

指定響應可接受的某些媒體類型。可以使用Accept頭來指示請求特別限於一小組所需的類型,例如請求嵌入式圖像的情況。

用作

Accept: text/plain 
// or application/xml or a comma separated list for multiple types (which you would have to parse) 

HttpServletRequest,您可以檢索它作爲

String responseContentType = request.getHeader("Accept"); 

Javadoc文檔HttpServletRequest#getHeader(String)here

顯然,如果你的客戶端是瀏覽器,那麼改變頭部有點難。