我正在节点js中编写一个rest api并使用mssql作为我的db。关于api应该按照休息指南返回的成功和错误响应的细节,我处于两难境地。例如,如果在执行db操作时键约束存在错误,则错误消息应该是这样的
{
"error": {
"code": 500,
"message": "Internal Server Error"
}
}
或者它需要更具体的错误细节,如表格详细信息。通过错误泄露内部细节是否正确?状态代码是否需要成为json对象的一部分?此外,成功消息是否应该更加通用,如“使用200个代码或更具体的记录创建成功”?
答案 0 :(得分:0)
始终在最终用户中思考。如果您返回完整的错误消息,它会帮助他吗?也许用户做了一个导致内部失败的错误请求。如果没有,将其清除并记录错误!
例如,当用户收到此回复时,他应该重复请求吗?或者是服务器故障,应该等待修复?所以,我建议像:
{
"error": {
"code": 1000,
"href": 'http://mywikiapage.com/errors/1000',
"message": "Sorry, we're experiencing some issues. Try again later."
}
}
请注意,错误代码已更改。它的新“自定义”代码可以引用一个wiki页面,它提供有关错误本身的更多详细信息。此外,用户始终可以从HTTP响应中获取500结果代码。
我还想建议阅读this other SO question