【问题标题】:Handle 404 Error with resource使用资源处理 404 错误
【发布时间】:2014-08-09 02:57:17
【问题描述】:

我有以下中间件来保护我的 get-route。

function isAdmin(req, res, next) {
    if(req.user.role == "admin") {
        return next();
    }
    return res.send(404);
}

我发送错误的方式正确吗?

这是我的 API 调用:

$scope.users = APIService.query({ route:'users' });

如何,我可以捕捉 404 并做一些事情吗?

谢谢!

【问题讨论】:

    标签: node.js angularjs


    【解决方案1】:

    ...所以,有很多东西会出现在搜索引擎上。

    也就是说,请尝试将此作为一种快速解决方案,指向您可以采取的一个方向:

    function isAdmin(req, res, next) {
        if(req.user.role == "admin") {
            return next();
        }
        res.status(404).send('You need to be admin to see this page');
    }
    

    在处理 404 方面有很多好东西:

    最后一个还提供了在渲染模板时处理错误的示例。

    【讨论】:

    • 谢谢!以及如何在查询中处理角度错误?
    • 不知道。我是 Angular 的新手,但我知道你应该问一个新的问题。因为有几种方法可以处理从 Angular 到节点的异步调用,所以您应该在新问题中发布 Angular 应用程序中的代码。这将使您获得第二个问题的答案的最佳机会。
    • 中间件的顺序重要吗?例如,当我使用中间件重定向 404 错误时。他们必须站在最后吗?例如:app.get('/api/users', isLoggedIn, isAdmin, isError function(req, res) 以及我将中间件放在app.use中的位置是什么?谢谢!
    • 是的。中间件将按照列出的顺序执行。当您看到(req, res, next) 时,调用next() 会告诉express 如果未发送响应则移动到堆栈中的下一个中间件组件。这就是一些中间件(记录器、解析器等)需要位于应用程序“顶部”的原因,以便它们在路由/业务逻辑获取进程之前预处理信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    相关资源
    最近更新 更多