加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Jersey’NoContent’响应返回200而不是204

发布时间:2020-12-14 05:35:13 所属栏目:Java 来源:网络整理
导读:我正在使用Jersey(1.18)为我的WebApplication构建REST API.在我的部分代码中,我有以下代码段. return Response.status(Status.NO_CONTENT).entity(err_message).build(); 其中Status是com.sun.jersey.api.client.ClientResponse.Status的实例; 根据Jersey文
我正在使用Jersey(1.18)为我的WebApplication构建REST API.在我的部分代码中,我有以下代码段.
return Response.status(Status.NO_CONTENT).entity(err_message).build();

其中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,see HTTP/1.1 documentation.

我试图将上述代码更改为

return Response.noContent().entity(err_message).build();

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

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

注意:不是Returning 200 response code instead of 204的副本

解决方法

见 this SO answer说,

…204 means “No Content”,meaning that the response contains no
entity,but you put one in it. It’s likely that Jersey is switching it
to a 200 for you,which is basically identical to a 204 except that it
contains a response entity.

Finally,you can get 204 responses very simply by a couple of built-in
behaviors: void methods and null return values both map to a 204
response. Otherwise,simply return Response.status(204).build().

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读