没有数据时应返回哪个http代码

时间:2017-11-29 00:37:20

标签: java rest web-services http jax-rs

我编写了Rest API,当后端系统中有数据时返回200个http代码。但是当后端系统中没有数据时,我应该返回哪个http状态代码,以便它可以帮助客户端代码解释响应而不会有任何歧义。

2 个答案:

答案 0 :(得分:3)

HTTP代码204用于表示请求成功,并且没有任何内容可以返回。如果没有找到数据并且认为这是一个错误,那就是经典的404。 HTTP status codes

答案 1 :(得分:3)

  

我编写了Rest API,当后端系统中有数据时返回200个http代码。但是当后端系统中没有数据时,我应该返回哪个http状态代码,以便它可以帮助客户端代码解释响应而不会有任何歧义。

快速审核; status-code描述了......

  

服务器尝试理解并满足客户端相应请求的结果。响应消息的其余部分将根据为该状态代码定义的语义进行解释。

换句话说,它是响应的简写分类,而不是后端系统的状态。

  

当后端系统中没有数据时,我应该返回哪个http状态代码,以便它可以帮助客户端代码解释响应而不会有任何歧义。

这取决于“后端系统中没有数据”对您的上下文意味着什么。

如果后端系统中没有数据表明客户端出现错误,那么您应该从Client Error 4xx类返回状态代码。

如果后端系统中没有数据表明服务器出错,那么您应该从Server Error 5xx类返回状态代码。

如果系统中根本没有错误(请求正常,服务器正在正确处理请求),那么您应该从Successful 2xx类返回状态代码

204 No Content具有确切含义;它建议客户端(和中间组件)原始服务器的响应不包括响应有效负载主体中的内容。

  

204响应由标题字段后的第一个空行终止,因为它不能包含消息正文。

换句话说,如果没有可用数据的表示是空的application / json对象

{}

或空应用程序/ json数组

[]

或application / json null

null

并且您要将该表示发送给客户端,然后使用204状态代码符合RFC 7321. 200几乎肯定是正确的代码这些案件。