java - @Produces 和@Consumes 的 Jersey (dropwizard)默认媒体类型

标签 java rest jersey jersey-2.0 dropwizard

默认情况下,我们应用程序中的所有方法都将基于 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/

相关文章:

rest - 在不使用插件的情况下向 Firefox HTTP 请求添加 header

angularjs - 使用 Angularjs 的 $http.post 和 Jersey-Rest-Backend 上传文件

java - 包括使用 JAX-RS+Jersey 进行 JSON 到对象映射的 Morphia

java - 如何让 Jersey 传递格式错误的 header

java - 方法返回类型 Object 中的 NullPointerException

java - 在 java 1.4 中覆盖方法时如何避免 "unused param"警告?

java - 在服务器之间共享 REST token

rest - 带有Sphinx的RESTful Web服务API文档

java - Jersey REST 响应消息正文

java - 项目构建错误: Non-resolvable parent POM cannot find repository