1

私はJerseyで構築されたRESTインターフェースを持っています。application/json実際には、すべての受信リクエストに対してのみコンテンツ タイプとしてのみサポートしています。そのため、メッセージ本文のリーダーとライターを次のように定義しました

@Provider
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class MarshallerProvider
    implements MessageBodyReader<Object>, MessageBodyWriter<Object>
{
}

ここで、GET と予期される content type を介してドキュメントを取得しようとするテストを作成しましたapplication/xml。Jersey はこの要求にMessageBodyProviderNotFoundException.

では、このようなサポートされていないリクエストを正しく処理するにはどうすればよいでしょうか? 例外マッパーを作成する必要がありますか? これは内部例外であるため、このアプローチは好きではありませんか?

このソリューションでは、HTTP 415 (サポートされていないメディア タイプ) を返すことができるはずです。

4

1 に答える 1

1

はい、例外ハンドラーを避け、このケースをメソッドで処理します。

@Path("example")
public class Example {

  @GET
  public Response getBadStuff() {
    return Response.status(Response.Status.UNSUPPORTED_MEDIA_TYPE).build();
  }

  @GET
  @Produces(MediaType.APPLICATION_JSON)
  public Object getGoodStuff() {
    return myObject;
  }
}
于 2013-09-20T20:03:26.773 に答える