繁体   English   中英

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

[英]REST API error return, include HTTP status code or not

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

  1. HTTP状态代码始终为200,返回的json应包含错误代码和错误消息。
  2. 将HTTP状态代码视为我们API的一部分,我们可能会根据相应的错误情况选择HTTP错误代码(4XX)。 我们可以在有效负载中包含一个json文档,以包含一个子代码和一个描述性注释。

我想知道哪一种更适合休闲服务?

您需要同时使用两者。

  1. HTTP状态 :使用它来处理请求的状态。 例如,如果查询数据库,但没有找到条目,则仍将返回200。如果未授权用户,则返回403,如果SQL连接数超过500,以此类推。

  2. API状态 :如果数据库请求成功,但您找不到任何条目,请在json {status: NO_ENTRIES }{ status: DEPRECATED_API }包含一个自定义字段。 在这些情况下,响应代码仍为200。

一般来说,我不主张总是返回200。有些失败情况与普遍接受的状态代码相匹配。 上面提到了有人403,当访问被拒绝时您将提供它。 当事情真的很严重时,通常由Web /应用程序服务器发出500。 404,如果找不到资源的任何记录。

因此,我主张:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM