Der offizielle JSON-Medientyp ist application/json
. Der Resteasy Anbieter für Jackson, ResteasyJackson2Provider
, gibt die Medientypen wie folgt aus:Korrekter JAX-RS-Medientyp passend für JSON-Provider
@Provider
@Consumes({"application/*+json", "text/json"})
@Produces({"application/*+json", "text/json"})
public class ResteasyJackson2Provider extends JacksonJaxbJsonProvider
…
Ich verstehe es nicht. Ich verstehe, dass "application/*+json"
würde übereinstimmen z.B. application/foo+json
. Aber würde es application/json
ohne das Pluszeichen +
entsprechen? Ist das in der JAX-RS-Spezifikation? Es stimmt nicht damit überein, wie ein Platzhalter funktionieren soll, es sei denn, der JAX-RS-Medientyp-Mustervergleich hat ein gewisses Verständnis für die Semantik der Teilkomponenten von Medientypen.
Ich konnte nichts finden in [JAX-RS-Spezifikation] (http://download.oracle.com/otndocs/jcp/jaxrs-2_0-fr-eval-spec/index.html) (Untertypen sind concret oder Platzhalter, keine Kombination) und ['MediaType # isCompatible'] (https://docs.oracle.com/javaee/7/api/javax/ws/rs/core/MediaType.html#isCompatible-javax.ws.rs .core.MediaType-) kann damit nicht umgehen. 'application/* + json' scheint falsch zu sein oder eine Vendor-Funktion von RestEasy. – dur
Ja, dieses spezielle von RESTASY. Und "application/json" passt zu "application/* + json". Siehe [MediaTypeMap.SubTypeMap.getPossible] (https://github.com/resteasy/Resteasy/blob/c68a7a679e0bc872e48da75eb357f6246df10ec7/restasy-jaxrs/src/main/java/org/jboss/restasy/core/MediaTypeMap.java#L227) – CyberWasp
Aber ist es ein Standardteil von JAX-RS? Würde ich erwarten, dass dies mit anderen JAX-RS-Implementierungen funktioniert? Bitte geben Sie eine separate Antwort an, damit ich sie als korrekt kennzeichnen kann, wenn Sie eine Referenz angeben. Vielen Dank. –