2

我正在构建一个休息 api,并且想知道返回错误。目前,我的计划是使用 http 状态码,但也总是返回结果。如果发生错误,结果将如下所示。

{
"Data":[the data],"
Errors":[the errors]
}

基本上,如果发生错误,将返回 4xx 或 5xx 的 Http 状态代码,并且返回的 JSON 中的 Errors 集合将包含有关错误的更多详细信息,其中 Data 部分为空。如果调用成功,将返回 200 的 Http 状态代码以及包含请求数据的数据元素,并且错误元素将为空。

这是返回带有错误信息的数据的好方法吗?

4

2 回答 2

1

在我的设计中,我没有在响应 JSON 对象中同时包含“数据”和“错误”属性。

如果 API 成功,我将只返回“数据”。http状态码是2XXX。

如果 API 失败,我将返回一个“错误”对象。http 状态遵循 RFC 2616 第 10 节中定义的规范。

我的错误对象的示例如下。

HTTP/1.1 404 Not Found
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 100
Date: Thu, 08 Nov 2012 07:07:05 GMT
Connection: keep-alive

{
  "type": "error",
  "status": 404,
  "message": "Not Found",
  "help_url": "/api/help.html"
}
于 2013-03-12T13:52:22.070 回答
0

我也在使用这种方法。我知道这不符合标准约定。但是无所谓。我认为无论哪种方式都可以争论。就我个人而言,我的 API 不是公开可用的(它们都在我的应用程序内部使用)。所以我认为这是一种“视情况而定”的情况。

我所有的 API 都返回带有 T 模板有效负载的相同数据结构。数据结构本身很好,因为消费者拥有他们需要的一切(成功状态、错误代码、错误详细信息,当然还有数据负载本身)。

这样,我的表示层可以以友好的方式统一处理所有 http 响应。

于 2019-07-17T23:57:37.513 回答