2015-07-10 127 views
0

我正在处理一个restful API后端,我们只使用json作为内容类型。据我所知,有两种方式执行错误响应:REST API错误返回,是否包含HTTP状态代码

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

我想知道哪一个更适合宁静的服务吗?

+0

将您的代码,您使用哪种技术或库进行服务器通信?t – Gaurav

回答

1

一般来说,我不会主张总是返回了200元。有迹象表明,匹配普遍接受的状态码的故障情况。以上,有人提到403,当访问被拒绝时,你提供了403。当事情真的向南时,500通常由web/app服务器发布。如果找不到某个资源的记录,则为404。

所以,我对做主张:

  1. 要与至少200,403,404,500
  2. 提供您的JSON错误响应
  3. 为详细的错误信息尽可能文档化每一个错误代码您的API可能会提供 - HTTP状态代码和每个子条件错误
1

您需要同时使用两者。

  1. HTTP状态:使用此处理请求的状态。例如,如果您查询数据库并且没有找到任何条目,那么您仍然会返回200.如果该用户未被授权,则403,如果SQL连接数超过500,依此类推。

  2. API状态:如果DB请求成功,你会发现没有条目,包括在你的JSON {status: NO_ENTRIES }{ status: DEPRECATED_API }的自定义字段。在这些情况下,响应代码仍然是200

+0

总是返回H TTP状态为200,但是使用API​​状态来表示相应的错误?我看到很多公司都这么做。 – realli

+0

我给了你一个例子。如果您的服务器遇到服务器错误,请说内存不足或上述内容,您应该在json回复中抛出500,Ann仍然可以添加一条错误消息,告诉客户端。 – prakharsingh95

相关问题