私はJerseyを使用してJava Webサービスで作業しています。次の問題をどのように処理できるかを理解したいと思います。
どうやら、JAX-RS (JSR 311)は 406 ステータスのすべての状況に対して、応答にエンティティがないと言います。たとえば、セクション 3.7.2 リクエスト マッチングで、リクエストを処理するメソッドを特定します。
受け入れ可能な応答エンティティ ボディ メディア タイプの少なくとも 1 つは、サポートされている出力データ形式です (セクション 3.5 を参照)。受け入れ可能な応答エンティティ ボディ メディア タイプのいずれかをサポートするメソッドがない場合、実装は、受け入れられない応答 (HTTP 406 ステータス) およびエンティティなしで WebApplicationException を生成する必要があります。例外は、セクション 3.3.4 で説明されているように処理する必要があります。
ただし、RFC 2616 では別のことを推奨しています。
10.4.7 406 受け入れられない
要求によって識別されるリソースは、要求で送信された受け入れヘッダーに従って受け入れられないコンテンツ特性を持つ応答エンティティを生成することしかできません。
HEAD リクエストでない限り、レスポンスには、ユーザーまたはユーザー エージェントが最も適切なものを選択できる、利用可能なエンティティの特性と場所のリストを含むエンティティを含める必要があります。エンティティ形式は、Content-Type ヘッダー フィールドで指定されたメディア タイプによって指定されます。形式とユーザー エージェントの機能に応じて、最も適切な選択肢の選択が自動的に実行される場合があります。ただし、この仕様では、そのような自動選択の基準を定義していません。
Note: HTTP/1.1 servers are allowed to return responses which are not acceptable according to the accept headers sent in the request. In some cases, this may even be preferable to sending a 406 response. User agents are encouraged to inspect the headers of an incoming response to determine if it is acceptable.
では、406 シナリオで使用可能なエンティティ特性のリストを含むエンティティを含めるにはどうすればよいでしょうか。