2017-03-03 5 views
0

MessageBodyWriter.writeToのメソッドには、MediaType mediaTypeMultivaluedMap<String,Object> httpHeadersが含まれています。MessageBodyWriterが最も適しています。バリアント

mediaTypeが最も適切な出力形式であると考えられますが、複数のAcceptヘッダー値が含まれている場合(つまりapplication/xml, q=0.5; application/json, q=0.9)、どのように選択されていますか。

さらに、最良のバリアント(言語など)はどのように選択されていますか? Request.selectVariant()を使って自動的に行うことは可能ですが、MessageBodyWriterの中でその方法を見つけていません。

おかげ

答えて

0

のほかに、どのように選択された最良の変異体は、(言語、など)ですか?

これは実際の実装に依存します。

が、私はMessageBodyWriter.writeToは本当に最高のバリアントを選択する気にしないのでMessageBodyWriter

以内にこれを行うにはどのように発見していません。 StringProviderSerializableProviderまたはFormMultivaluedMapProviderのようないくつかの実装を確認した後、入力を受け取り、文字列、シリアル化されたオブジェクトまたはフォームのエンコードされた文字列として出力ストリームに書き込みます。彼らは、使用する文字エンコーディングのような細部についてはmediaTypeしか使用しません。

したがって、使用されるMessageBodyWriterの実装を選択する前に、最も適切な出力フォーマットの決定を決定する必要があります。 StringProviderは常に文字列を出力するだけで、それがJSON文字列かXML文字列なのかどうかは気にしません。

関連する問題