2011-10-04 14 views

risposta

13

È possibile assegnare l'indice di qualità a ciascun tipo di supporto nell'annotazione @Produces. I.e.you può fare quanto segue per rendere Jersey preferiscono JSON se entrambi XML e JSON sono consentiti:

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

Quindi, con il metodo web in grado di produrre due tipi di media, in che modo il richiedente specifica quale desidera? È fatto tramite una query param? Come? –

+1

Utilizzo dell'intestazione della richiesta Accept. (http://www.w3.org/Protocols/HTTP/HTRQ_Headers.html#z3) –

+0

Spot on. Grazie! – FredArters

1

Si dovrebbe essere in grado di impostare il @Produces annotazioni per specificare il formato di ritorno in questo modo:

@Produces({ "application/json" }) 

Come mai non c'è accetta intestazione?

+0

Ciò comporterà un errore 406 ogni volta che viene richiesto XML. L'OP vuole essere in grado di restituire XML e JSON, ma di default su JSON se nessuno dei due è richiesto. – idontevenseethecode

+0

intendi @Consumi ({"application/json"}) –

-2

È possibile specificare la tipologia di generazione specificando i tipi di media nel vostro ordine di preferenza l'annotazione @Produces.

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

Nel codice precedente poiché "application/json" viene in primo luogo, se non accettare intestazione è specificato nella richiesta Jersey imposterà generare risposta JSON.

L'utilizzo di qs (come suggerito da Martin) rende la preferenza più esplicita, ma è un po 'più complicata da comprendere.

+0

Questo non sembra funzionare nella versione attuale. Non posso parlare per le versioni precedenti di Jersey. Senza l'intestazione 'accept', anche se JSON è il primo nell'elenco Produces, restituisce ancora XML. Potrebbe esserci qualcos'altro che influisce su questo oltre alla versione di Jersey? – FredArters

+0

Questa è solo un'informazione errata. L'ordine dei tipi di media nell'annotazione Produce non ha assolutamente alcun effetto sulla risposta predefinita. – Michael

+0

Bene, Oracle afferma che l'ordine è pertinente: https://docs.oracle.com/cd/E19798-01/821-1841/6nmq2cp2c/index.html Ma penso che in realtà sia dipendente dall'implementazione – Gui13

Problemi correlati