Jersey'NoContent'响应返回200而不是204

Ath*_*oud 6 java rest jersey-1.0

我正在使用Jersey(1.18)为我的WebApplication构建REST API.在我的部分代码中,我有以下代码段.

return Response.status(Status.NO_CONTENT).entity(err_message).build();
Run Code Online (Sandbox Code Playgroud)

在哪里Status是一个实例com.sun.jersey.api.client.ClientResponse.Status;

根据Jersey文档NO_CONTENT应该返回一个204代码,而不是这个,http响应有一个包含200个代码的标题.

NO_CONTENT
public static final ClientResponse.Status NO_CONTENT
204 No Content,请参阅HTTP/1.1文档.

我试图将上述代码更改为

return Response.noContent().entity(err_message).build();
Run Code Online (Sandbox Code Playgroud)

但问题仍然存在.作为旁注,使用NOT_FOUND而不是按预期NO_CONTENT返回404标头.

关于'如何返回204代码?'的任何建议,这是一个错误或我做错了什么.

注意:不是返回200响应代码而不是204的重复

Pau*_*aul 7

看到这个SO答案说,

... 204表示"无内容",意味着响应不包含任何实体,但您在其中放置了一个实体.泽西岛很可能会把它换成200,除了包含响应实体之外,它基本上与204相同.

最后,您可以通过几个内置行为非常简单地获得204个响应:void方法和null返回值都映射到204响应.否则,只需返回Response.status(204).build().

换句话说,如果您想要"NO_CONTENT",则不要在回复中包含内容.