Response.header是否覆盖@Produces注释?

时间:2018-04-24 15:01:07

标签: java rest jersey

我正在使用Jersey 1.8并且@Produces注释与Response.header()不同

@GET
@Produces(MediaType.TEXT_HTML)
public Response test(){
    return Response.status(200).header("Content-Type", "application/json;charset=utf-8")
   .entity("test response");
}

在这种情况下,响应内容类型是html还是json?

1 个答案:

答案 0 :(得分:1)

我已经制作了一个小的Jax-RS程序来验证,Response对象中设置的标头似乎会覆盖@Produces注释。

您可以使用命令行实用程序curl

对其进行测试
$ curl -s -i  http://localhost:8080/myapp/myresource/hello
HTTP/1.1 200 OK
Content-Type: application/json;charset=utf-8
Content-Length: 21

Hello World with JSON

我的WS类似于你的WS:

@GET
@Path("/hello")
@Produces(MediaType.TEXT_HTML)
public Response helloWorld() {
    return Response.status(200).header("Content-Type", "application/json;charset=utf-8")
            .entity("Hello World with JSON").build();
}