2017-03-03 5 views
0

Die MessageBodyWriter.writeTo Methode umfasst MediaType mediaType und MultivaluedMap<String,Object> httpHeaders.MessageBodyWriter am besten geeignet Variante

mediaType soll das am besten geeignete Ausgabeformat sein, aber wie wird es ausgewählt, wenn mehrere Accept Header-Werte enthalten sind (d. H. application/xml, q=0.5; application/json, q=0.9).

Wie wird die beste Variante ausgewählt (Sprache usw.)? Mit Hilfe der Request.selectVariant() ist es möglich, es automatisch zu tun, aber ich habe nicht gefunden, wie dies innerhalb der MessageBodyWriter zu tun.

Dank

Antwort

0

Außerdem, wie ist die beste Variante ausgewählt (Sprache, etc.)?

Das hängt wirklich von der Implementierung ab.

aber ich habe nicht gefunden, wie dies innerhalb der MessageBodyWriter tun

Weil MessageBodyWriter.writeTo wirklich nicht kümmern uns um die beste Variante auswählen. Nach dem Überprüfen einiger Implementierungen, wie StringProvider, SerializableProvider oder FormMultivaluedMapProvider, scheint es klar, dass sie nur die Eingabe nehmen und sie in ihren jeweiligen Formaten in den Ausgabestrom schreiben: als String, als serialisiertes Objekt oder als formcodierte Zeichenkette. Sie verwenden nur mediaType für so kleine Details wie die Zeichencodierung, die sie verwenden sollten.

Daher muss die Entscheidung über das am besten geeignete Ausgabeformat entschieden werden, bevor die verwendete MessageBodyWriter Implementierung als z. a StringProvider wird immer nur die Zeichenkette ausgeben, und es ist egal, ob es eine JSON-Zeichenkette oder eine XML-Zeichenkette oder etwas anderes ist.

Verwandte Themen