通过API响应404错误代码以获取有效请求但未找到数据

时间:2017-03-09 06:42:15

标签: http get http-status-code-404

我们正在设计一个供我们的应用程序使用的API,并且API应该返回下一个更高版本,给定请求的查询字符串中提供的版本。像这样:

GET /update-available?AppVersion=3.2.3&someotherinfo=ABCD1234

问题是如果在给定一组特定查询参数的情况下没有可用的更新,那么返回代码应该是什么。 (例如,如果应用程序已经有最新版本)。

根据我有限的知识和经验,我们应该发送一个空的回复200或者说“没有找到更新”的消息。

但我的一位同事评论说使用404更好,因为更新可用'是一个问题,答案是“未找到”'和适当的响应代码。

在决定什么是更合适的方法时有任何帮助?

1 个答案:

答案 0 :(得分:1)

最佳响应状态代码为204 No Content,表示:"服务器成功处理了请求,并且未返回任何内容" (Wiki

状态代码200也是合适的,因为它是成功的HTTP请求的标准响应 - /update-available是一个资源,一个服务,它处理得非常成功。服务结果是"没有可用的更新",但是 服务本身存在,并且工作正常。

状态代码404不合适。原因包括:

  1. 4xx状态代码表示"客户端错误"。在这种情况下,客户端没有任何问题。
  2. 404表示"找不到请求的资源,但将来可能会提供。"(Wiki)。但是,所请求的资源(是否可以更新的服务)是可用的。
  3. 如果在{34}中使用404,则无法使用更新" case,当/update-available路由本身不可用时(例如从服务器配置中删除),应使用哪个状态代码。