REST HTTP 错误时的状态码 Mongoose
REST HTTP Status code if error Mongoose
可能发生错误时我必须使用哪个状态代码。当从猫鼬数据库中获取所有银行时。用户只执行此客户端操作。
客户操作
GET Url: /banks
猫鼬代码
Banks
.find()
.exec(function(err, banks) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.status(200).jsonp(banks);
}
});
我认为状态码是 500 而不是 400。因为客户端 url 是有效的。
错误代码 4xx
表示客户端错误,例如无效请求。但是,在这种情况下,问题出在服务器端的数据库上。所以你应该使用5xx
。在您的示例中,500
可以。
您可以在此处找到不同代码的快速概览:
https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#5xx_Server_Error
这取决于实施。
虽然状态代码 5xx
似乎是服务器上产生的此类错误的适当状态代码,但并非所有来自 Mongoose 的错误都像代码所暗示的那样是由内部服务器错误引起的。
If one would implement validation inside Mongoose schemas, validations errors would be thrown up the stack and would pass through the Model.save()
callback as an error as well. Even without validation, some built-in Mongoose errors such as the Cast Error 通常由错误的输入数据触发(例如,不小心将 undefined
的值从丢失的 URL 参数传递为查询模型的 _id
字段 ).
如果您在通过 Mongoose 模型保存输入数据之前验证输入数据,可以安全地假设您从此类回调中得到的唯一错误是内部服务器错误,然后 5xx
状态代码。
可能发生错误时我必须使用哪个状态代码。当从猫鼬数据库中获取所有银行时。用户只执行此客户端操作。
客户操作
GET Url: /banks
猫鼬代码
Banks
.find()
.exec(function(err, banks) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.status(200).jsonp(banks);
}
});
我认为状态码是 500 而不是 400。因为客户端 url 是有效的。
错误代码 4xx
表示客户端错误,例如无效请求。但是,在这种情况下,问题出在服务器端的数据库上。所以你应该使用5xx
。在您的示例中,500
可以。
您可以在此处找到不同代码的快速概览: https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#5xx_Server_Error
这取决于实施。
虽然状态代码 5xx
似乎是服务器上产生的此类错误的适当状态代码,但并非所有来自 Mongoose 的错误都像代码所暗示的那样是由内部服务器错误引起的。
If one would implement validation inside Mongoose schemas, validations errors would be thrown up the stack and would pass through the Model.save()
callback as an error as well. Even without validation, some built-in Mongoose errors such as the Cast Error 通常由错误的输入数据触发(例如,不小心将 undefined
的值从丢失的 URL 参数传递为查询模型的 _id
字段 ).
如果您在通过 Mongoose 模型保存输入数据之前验证输入数据,可以安全地假设您从此类回调中得到的唯一错误是内部服务器错误,然后 5xx
状态代码。