1

我有一个使用 Jersey 构建的 REST 接口。实际上我只支持application/json所有传入请求的内容类型。这就是为什么我将我的消息正文阅读器和作者定义为

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

现在我编写了一个测试,尝试通过 GET 和预期的内容类型获取文档application/xml。泽西岛用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 回答