我为REST API开发了一些Node.js错误处理最佳实践的原型。
我想使用error
类(new Error("some error"
)
但是,当使用错误作为类时,我遇到了多个错误的情况,这些错误实际上不是错误,而是用户的错误,例如:
用户未正确填写名字和姓氏。 我不想返回仅名字的错误,但是我想删除两个错误,而实际上并不是真正的错误,错误是崩溃的事情,在这种情况下,这只是用户的错误,因此我决定将其拆分对于API的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
});
}
您如何看待这些家伙?
我应该尝试这种方法还是只能坚持两种可能的情况-错误或数据。 如果您只喜欢两种情况,请实际告诉我-使用代码,您如何处理错误。
谢谢。