【问题标题】:Error code convention?错误代码约定?
【发布时间】:2014-08-21 22:27:55
【问题描述】:

在我以前工作的地方,我们的 PHP 开发人员设置了一个包含自定义错误编号的列表。我们通过 REST 接口(纯 json)进行通信。

示例可能是(随机):

  • 100 用户未通过身份验证;
  • 200 日期未定义;
  • 210 未定义父代码;
  • 300 数据库事务失败;

等等,你知道的;很长的清单。
目的是我在客户端解释这些错误,并相应地处理必要的前端操作。

对于个人项目,我也想这样做,但我想知道是否有一些与错误代码相关的约定。

【问题讨论】:

    标签: javascript php error-handling


    【解决方案1】:

    使用 REST API,您应该使用 HTTP 状态代码来指示错误。看一看:http://www.restapitutorial.com/httpstatuscodes.html

    【讨论】:

    • 自定义代码怎么样?数据库事务失败?有什么约定吗?
    • 一般你不想通过api暴露那种类型的信息。您希望您的 API 抽象出存储细节。通过 API 传递数据库事务失败等信息,您违反了该抽象。在发生数据库错误的情况下,我认为您可能希望返回 500 错误(可能是另一个错误代码),然后在您的服务器上记录有关该错误的更多具体信息,以便您可以恢复它。
    • 我不同意其中的大部分内容,我使用的大多数 API 返回有用的消息或代码; http 状态码用于网络连接的状态,而不是 API
    • 如果您愿意,当然可以用更多错误信息补充 HTTP 状态代码。但是,此信息通常可能是多余的和/或指示传递给 api 用户的实现的过多细节(例如,数据库错误消息)。看看 Twitters API 错误代码,它们使用 HTTP 状态代码和自定义错误代码的组合来提供更多信息。 dev.twitter.com/docs/error-codes-responses
    【解决方案2】:

    通常,标准的 HTTP 状态码是最好的解决方案。如果您需要发送更多信息,我建议您发送一条描述性消息,即 (HTTP 401: "User not Authenticated")

    如果您开始通常需要不符合标准 HTTP 状态代码的错误代码,您可能会向客户端提供它并不真正需要的数据。对于失败的数据库事务之类的事情,我可能只会返回 HTTP 500 并在服务器上记录堆栈转储。如果您有权访问服务器,则可以从那里获取它。如果您不这样做,那么您可能也无权访问数据库,因此这些信息将无济于事。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-08
      • 1970-01-01
      相关资源
      最近更新 更多