Node.js REST API错误处理最佳实践

时间:2018-07-23 19:39:04

标签: node.js rest api error-handling

我为REST API开发了一些Node.js错误处理最佳实践的原型。

我想使用error类(new Error("some error") 但是,当使用错误作为类时,我遇到了多个错误的情况,这些错误实际上不是错误,而是用户的错误,例如:

用户未正确填写名字和姓氏。 我不想返回仅名字的错误,但是我想删除两个错误,而实际上并不是真正的错误,错误是崩溃的事情,在这种情况下,这只是用户的错误,因此我决定将其拆分对于API的3种情况:

  1. 错误。
  2. 故障。
  3. 数据

错误是指出现错误(例如,标题发送不正确,或者用户没有权限,或者用户尝试更新的项目已过期)或类似错误。 错误是单一的,并且会作为异常抛出,通常是用于远程使用API​​,我的意思是-不是来自实际的官方前端,而是来自另一个项目的Web服务或其他内容。

错误是通过官方前端应用程序产生的,例如,如果用户有权在前端查看表单,那么用户可能会获得许可,对吗?用户如果可以看到表格,可能会被登录? 如果他尝试入侵并更改前端,那么他将有一个错误,但不是故障。

数据是指一切正常,然后返回数据。 可以为空白,但是状态代码将为204,并返回空白对象。

这是代码:

  // Will be returned on exception, made actually 
  // for developers who using the api from remote
  if (error) {
    res.status(status).json({
      OK: false,
      error: {
        name: error.name,
        message: error.message
      }
    });
  }

  // Made for clients to send back information
  // about faults they did, like did not fill first name
  if (faults) {
    res.status(status).json({
      OK: false,
      faults
    })
  }

  // Everything is okay. Data could be blank, but
  // status code is 2xx and OK is true (boolean),
  if (data) {
    res.status(status).json({
      OK: true,
      data
    });
  }

您如何看待这些家伙?

我应该尝试这种方法还是只能坚持两种可能的情况-错误或数据。 如果您只喜欢两种情况,请实际告诉我-使用代码,您如何处理错误。

谢谢。

0 个答案:

没有答案