2011-10-04 7 views

答えて

13

@Producesアノテーションの各メディアタイプに品質インデックスを割り当てることができます。 XMLとJSONの両方が許可されている場合I.e.youジャージーを作るために、次のJSONを好む行うことができます。

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

を意味します。したがって、2つのメディアタイプを生成できるWebメソッドでは、リクエスタはどのようなものを指定しますか?それはクエリのパラメータを介して行われますか?どうやって? –

+1

Accept要求ヘッダーの使用。 (http://www.w3.org/Protocols/HTTP/HTRQ_Headers.html#z3) –

+0

Spot on。ありがとう! – FredArters

1

あなたはそのようなリターン形式を指定する@Produces注釈を設定することができるはずです:いいえがある

@Produces({ "application/json" }) 

どのように来るヘッダーを受け入れ?

+0

これにより、XMLが要求されるたびに406エラーが発生します。 OPはXMLとJSONを返すことを望んでいますが、どちらも要求されなければJSONにデフォルト設定されています。 – idontevenseethecode

+0

あなたは@Consumes({"application/json"}) –

-2

あなたは@Producesのアノテーションで好みのご注文にメディアタイプを指定することで、世代の好みを指定することができます。上記のコードで

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

「アプリケーション/ JSON」以来全く受け入れヘッダがジャージーはJSONレスポンスを生成するにデフォルト設定されます要求に指定されていない場合、最初に来ます。

qsを使用すると(Martinの示唆したように)、より明示的になりますが、理解するのが少し複雑になります。

+0

これは現在のバージョンでは動作していません。私はジャージーの古いバージョンでは話せません。 'accept'ヘッダーがないと、JSONがProducesリストの最初のものであっても、依然としてXMLが返されます。 Jerseyのバージョン以外にもこれに影響を与える何か他のものがありますか? – FredArters

+0

これは間違った情報です。 Producesアノテーションのメディアタイプの順序は、デフォルトのレスポンスにはまったく影響しません。 – Michael

+0

さて、オーダーには関連性があると言われています。https://docs.oracle.com/cd/E19798-01/821-1841/6nmq2cp2c/index.html実際には実装に依存していると思います – Gui13

関連する問題