REST API错误返回,是否包含HTTP状态代码

时间:2015-07-10 05:19:10

标签: json rest http

我正在开发一个宁静的API后端,我们只使用json作为内容类型。我知道有两种执行错误响应的方法:

  1. HTTP状态代码始终为200,返回的json应包含错误代码和错误消息。
  2. 将HTTP状态代码视为API的一部分,我们可能会选择HTTP错误代码(4XX)来处理相应的错误情况。我们可以在有效负载中包含一个json文档,以包含子代码和描述性注释。
  3. 我想知道哪一个更适合享受宁静的服务?

2 个答案:

答案 0 :(得分:1)

你需要同时使用它们。

  1. HTTP状态:使用此选项处理请求的状态。例如,如果查询数据库但未找到任何条目,则仍然返回200.如果用户未获得授权,则403,如果SQL连接数超过500,依此类推。

    < / LI>
  2. API状态:如果数据库请求成功且您没有找到任何条目,请在您的json {status: NO_ENTRIES }{ status: DEPRECATED_API }中添加自定义字段。在这些情况下,响应代码仍为200.

答案 1 :(得分:1)

一般来说,我不主张总是返回200.有一些失败的场景符合普遍接受的状态代码。上面,有人提到403,当访问被拒绝时你会提供。当事情真正发生南方时,通常由网络/应用服务器发布500。 404,如果找不到资源的记录。

所以,我主张:

  1. 至少使用200,403,404,500
  2. 在JSON错误响应中提供尽可能详细的错误详细信息
  3. 记录您的API可能提供的每个错误代码 - HTTP状态代码和每个子条件错误