gpt4 book ai didi

angularjs - AngularJS和ExpressJS HTTP错误处理

转载 作者:行者123 更新时间:2023-12-03 07:44:37 26 4
gpt4 key购买 nike

我很好奇在MEAN设置中处理HTTP错误的正确方法是什么。可以说我有一个如下所示的快速路由设置:

router.get('/', function(req, res) {

fetchSomeData(function (err, data) {
if (err) {
// Okay some error occurred
return res.send(500, err);
} else {
// All fine
res.json(data);
}
});
});

AngularJS http提取如下所示:
$http.get('/api/things/')
.then(
function (response) {
// Data received
},
function (httpError) {
// Some http error occurred
});

如果在无法获取某些数据时发送500错误,则它将登录到 Failed to load resource: the server responded with a status of 500 (Internal Server Error)网页的控制台开发者控制台中,这对于最终用户而言可能不太好。

我在想,如果我改为在快速路线 if (err)子句中执行 res.json({ error: "Handle this error"});
然后,如果响应包含错误,我将能够在AngularJS $http中查找,然后向用户显示此错误,并且用户不必看到讨厌的500错误。

有什么明显的我想念的地方吗?

最佳答案

您的做法或多或少是正确的。要处理expressJs的错误,请在路由处理程序的末尾添加一个异常处理程序,如下所示:

app.use(function(err, req, res, next) {
if(!err) return next()
console.log(err.stack)
res.status(500).send({status:"error", message: err.message})
})

并确保您不会在路由处理程序内捕获异常,否则 err对象将为 undefined

现在,在客户端,您可以检查 if (data['status'] == "error"),然后使用 data['message]向用户显示警告。

关于angularjs - AngularJS和ExpressJS HTTP错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31671099/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com