我有一个使用Jersey构建的REST接口。实际上我只支持所有传入请求的内容类型application/json
。这就是为什么我将我的消息体读者和作者定义为
@Provider
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class MarshallerProvider
implements MessageBodyReader<Object>, MessageBodyWriter<Object>
{
}
现在我编写了一个测试,我尝试通过GET和期望的内容类型application/xml
获取文档。 Jersey通过MessageBodyProviderNotFoundException
回复此请求。
那么正确处理此类不受支持的请求的最佳方法是什么?我应该写一个异常映射器吗?既然这是一个内部例外,我不喜欢这种方法吗?
解决方案应该允许我返回HTTP 415(不支持的媒体类型)。
答案 0 :(得分: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;
}
}