0

@Consumesと同様に@Produces、どちらも Media タイプを受け入れます。Accept リクエストのヘッダーはどのアノテーションに対応していますか?

ほとんどの例 (例: jax-rs アプリケーションを開発する際に accept-parameters を処理する方法@Produces) では、クライアント要求からヘッダーを受け入れるために使用することが示されています。

4

1 に答える 1

2

@Consumesリクエストタイプ、つまりクライアントが送信しているタイプContent-Typeです。例えば

@Consumes("application/json")
...
> POST / HTTP/1.1
> Content-Type: application/json
{ "json": "data" }

< 200 OK

@Consumes("application/json")
...
> POST / HTTP/1.1
> Content-Type: application/xml
<xml><data></data></xml>

> 415 Unsupported Media Type

リクエストの例を 2 つ示します。サーバー上では、両方に の注釈が付けられてい@Consumes("application/json")ます。これは、JSON 形式で送信されるデータのみを処理できることを意味します。最初のリクエストで、クライアントは正しいデータを送信するContent-Typeため、OK レスポンスが返されます。Content-Type2 番目の要求では、サポートされていないXML データを送信するため、415 を取得します。

@Produces、サーバーから送信されるデータのタイプです。クライアントは、Accept受け入れる (または処理する) ことができるタイプを示すヘッダーを追加することもできます。そのタイプが で指定されていない場合@Produces、サーバーはそのタイプを処理できず、クライアントはエラー メッセージを受け取ります。例えば

@Produces("application/json")
...
> GET / HTTP/1.1
> Accept: application/json

< 200 OK
{ "json" : "data" }


@Produces("application/json")
...
> GET / HTTP/1.1
> Accept: application/xml

< 406 Not Acceptable
于 2016-01-07T02:20:26.980 に答える