默认情况下,我们的应用程序中的所有方法都是基于JSON的。我想避免将@Produces和@Consumes(可能是可选的,不确定)添加到每个Resource类,如下所示。
@Path("/test")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class TestResource {
@GET
public TestClass test() {
return new TestClass();
}
}
如果我没有定义媒体类型,它目前使用 application / octet-stream 。我希望有一种方法可以通过泽西的ResourceConfig或其他方式将其改为其他东西。在源代码中查看但迷路了。
目前dropwizard使用的是jersey 1.18,但很快就会更新到2.0(希望:))。所以两个版本的答案都将受到赞赏。
答案 0 :(得分:1)
也许这可以通过ContainerRequestFilter来完成。在那里你可以修改ACCEPT标题。如果你只将它设置为json,那么这可以提供帮助。您是否尝试仅将REST客户端中的ACCEPT标头字段设置为JSON?这有帮助吗?
或者您只需使用json构建响应:
@GET
@Path("get")
public Response getInTestResource()
{
return Response.status(Status.OK).type(MediaType.APPLICATION_JSON).entity("get is ok").build();
}
但是有一个问题:如果你记录这个方法消耗或产生什么,这真的太过分了吗?我认为这个注释并不是额外的工作......