2017-03-03 18 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字符串或别的东西。