2017-03-03 22 views
0

MessageBodyWriter.writeTo方法包括MediaType mediaTypeMultivaluedMap<String,Object> httpHeadersMessageBodyWriter最適合變體

mediaType應該是最合適的輸出格式,但是當包含多個Accept標題值(即application/xml, q=0.5; application/json, q=0.9)時如何選擇它。

此外,如何選擇最佳變體(語言等)?使用Request.selectVariant()可以自動完成,但我還沒有在MessageBodyWriter內找到如何操作。

感謝

回答

0

此外,最好的變體如何選擇(語言等)?

這真的取決於實施。

,但我還沒有找到如何將MessageBodyWriter

因爲MessageBodyWriter.writeTo並不真正關心選擇最好的變種內這樣做。在檢查了幾個實現之後,例如StringProviderSerializableProviderFormMultivaluedMapProvider,似乎很清楚,它們只是接受輸入,並將它按其各自的格式寫入輸出流中:作爲字符串,作爲序列化對象或作爲表單編碼字符串。他們只使用mediaType來處理他們應該使用的字符編碼等細節。

因此,在選擇使用的MessageBodyWriter實現之前,必須決定關於最合適的輸出格式。一個StringProvider將始終只輸出字符串,並不會在乎它是JSON字符串還是XML字符串或別的東西。