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

Sha*_*ire 2 java rest web-services http jax-rs

我编写了 Rest API,当后端系统中有数据时,它返回 200 http 代码。但是,当后端系统中没有数据时,我应该返回哪个 http 状态代码,这样它将帮助客户端代码毫无歧义地解释响应。

Voi*_*son 5

我编写了 Rest API,当后端系统中有数据时,它返回 200 http 代码。但是,当后端系统中没有数据时,我应该返回哪个 http 状态代码,这样它将帮助客户端代码毫无歧义地解释响应。

快速复审; 状态描述...

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

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

当后端系统中没有数据时我应该返回哪个http状态代码,以便它将帮助客户端代码毫无歧义地解释响应。

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

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

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

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

204 内容没有明确的含义;它通知客户端(和中间组件)原始服务器的响应在响应负载主体中不包含任何内容。

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

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

{}
Run Code Online (Sandbox Code Playgroud)

或一个空的 application/json 数组

[]
Run Code Online (Sandbox Code Playgroud)

或 application/json null

null
Run Code Online (Sandbox Code Playgroud)

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