在我的API中,如果任何查询失败,那么响应状态代码应该是什么?
示例:
Grade.find({},function(err,grades) {
if (err)
res.status(500).json({error:err,message: 'Somthing went wrong please try again later'});
else
res.status(200).json({grades:grades});
});
500 OK还是应该是别的?
答案 0 :(得分:0)
根据http status codes,您可以使用5xx
表示服务器错误,使用4xx
表示客户端错误。
答案 1 :(得分:0)
TL; DR A 500状态是最接近'一个尺寸适合所有'错误,但您可以深入了解详情。
根据 the standards ,您有很多选择:
5xx服务器错误
500内部服务器错误
501未实施
502 Bad Gateway
503服务不可用
504网关超时
510未延期
您还可以创建自己的5xx状态来区分错误类型,只是尝试使用未定义的数字。
或坚持500状态并将原始错误代码附加到您的结果:
res.status(500).json({error:err, code : err.code, message: 'Somthing went wrong please try again later'})
;
但是,在回答5xx之前,您需要通过验证收到的数据来确保错误不是来自客户端。如果收到的数据无效,请使用400 Bad Request代码。如果问题与安全相关,请使用403 Not Authorized等...