2011-10-04 18 views

Respuesta

13

Puede asignar el índice de calidad a cada tipo de medio en la anotación @Produces. I.e.you puede hacer lo siguiente para hacer Jersey prefieren JSON si ambos XML y JSON están permitidos:

@Produces({"application/json;qs=1", "application/xml;qs=.5"}) 
+0

Entonces, con el método web capaz de producir dos tipos de medios, ¿cómo especifica el solicitante cuál quiere? ¿Se hace a través de un param de consulta? ¿Cómo? –

+1

Usando el encabezado de solicitud Aceptar. (http://www.w3.org/Protocols/HTTP/HTRQ_Headers.html#z3) –

+0

Spot on. ¡Gracias! – FredArters

1

Usted debe ser capaz de establecer la anotación @Produces para especificar el formato de retorno de este modo:

@Produces({ "application/json" }) 

¿Cómo es que no hay acepta cabecera?

+0

Esto dará como resultado un error 406 siempre que se solicite XML. El OP desea poder devolver XML y JSON, pero de forma predeterminada a JSON si no se solicita ninguno. – idontevenseethecode

+0

te refieres a @Consumes ({"application/json"}) –

-2

Puede especificar las preferencias de la generación mediante la especificación de los tipos de medios en su orden de preferencia en la anotación @Produces.

@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) 

En el código anterior, ya que "application/json" viene primero, si no aceptan cabecera se especifica en la solicitud Jersey será por defecto la generación de respuesta JSON.

El uso de qs (como lo sugiere Martin) hace que la preferencia sea más explícita, pero es un poco más complicada de comprender.

+0

Esto no parece funcionar en la versión actual. No puedo hablar de versiones anteriores de Jersey. Sin el encabezado 'aceptar', incluso si JSON es el primero en la lista de Productos, aún devuelve XML. ¿Podría haber algo más que afecte esto además de la versión de Jersey? – FredArters

+0

Esta es solo información incorrecta. El orden de los tipos de medios en la anotación Produce no tiene ningún efecto en la respuesta predeterminada. – Michael

+0

Bueno, Oracle dice que el orden es relevante: https://docs.oracle.com/cd/E19798-01/821-1841/6nmq2cp2c/index.html Pero creo que en realidad depende de la implementación – Gui13

Cuestiones relacionadas