MessageBodyWriter.writeTo
方法包括MediaType mediaType
和MultivaluedMap<String,Object> httpHeaders
。
mediaType
应该是最合适的输出格式,但如果包含多个Accept
标头值(即application/xml, q=0.5; application/json, q=0.9
),它是如何被选中的。
此外,如何选择最佳变体(语言等)?使用Request.selectVariant()
可以自动执行,但我还没有找到如何在MessageBodyWriter
内完成此操作。
由于
答案 0 :(得分:0)
此外,如何选择最佳变体(语言等)?
这实际上取决于实施。
但我还没有在MessageBodyWriter
中找到如何做到这一点
因为MessageBodyWriter.writeTo
并不真正关心选择最佳变体。在检查了一些实现之后,例如StringProvider,SerializableProvider或FormMultivaluedMapProvider,似乎很清楚他们只是接受输入,并以其重新格式将其写入输出流:作为字符串,作为序列化对象或表单编码字符串。他们只使用mediaType
作为他们应该使用的字符编码等细节。
因此,在选择使用过的MessageBodyWriter
实现之前,必须决定最合适的输出格式。 StringProvider
始终只输出字符串,并且如果它是JSON字符串或XML字符串或其他内容,则无需关心。