默认情况下,我们应用程序中的所有方法都将基于 JSON。我想避免向每个 Resource 类添加 @Produces 和 @Consumes(可能是可选的,不确定),如下所示。
@Path("/test")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class TestResource {
@GET
public TestClass test() {
return new TestClass();
}
}
如果我没有定义媒体类型,目前它使用application/octet-stream。我希望有一种方法可以通过 Jersey 的 ResourceConfig 或其他方式将其更改为其他内容。在源代码中四处查看但迷路了。
目前 dropwizard 使用 jersey 1.18,但很快就会更新到 2.0(希望 :))。因此,我们将不胜感激这两个版本的答案。
最佳答案
也许这可以通过 ContainerRequestFilter 来完成。您可以在那里修改 ACCEPT header 。如果您将其设置为仅 json,那么这会有所帮助。您是否尝试过将 REST 客户端中的 ACCEPT header 字段设置为仅 JSON?这有帮助吗?
或者你只是像这样用 json 构建你的响应:
@GET
@Path("get")
public Response getInTestResource()
{
return Response.status(Status.OK).type(MediaType.APPLICATION_JSON).entity("get is ok").build();
}
但有一个问题:如果您记录下此方法消耗或产生的内容,这是否真的过于繁琐?我认为注释不是太多的额外工作......
关于java - @Produces 和@Consumes 的 Jersey (dropwizard)默认媒体类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26116666/