【问题标题】:Express app.all interfering with API callsExpress app.all 干扰 API 调用
【发布时间】:2014-08-03 12:58:33
【问题描述】:

我正在构建一个 MEAN 应用,而 Angular 正在处理客户端定义的任何路由,例如“/profile”、“/stream”等。

因为我在 Angular 中使用 HTML5Mode,所以我必须将以下内容添加到我的 express 配置中,以允许从浏览器 URL 栏中访问和输入干净的 URL:

app.all('/*', function (req, res, next) {
    res.sendfile('views/dashboard.html', { root: __dirname });
});

然而,这现在干扰了我的 API,任何 API 调用都返回空白,因此,例如,如果我访问 users/active/profile 应该返回当前用户详细信息的 JSON 响应,浏览器会将您重定向到主页。

【问题讨论】:

    标签: angularjs express


    【解决方案1】:

    Express 将按照您声明它们的顺序处理请求 URL(路由),因为 * 是所有其他先前路由声明的例外,您需要将此代码移动到路由的末尾:

      /** this needs to be your last route **/
        app.all('/*', function (req, res, next) {
            res.sendfile('views/dashboard.html', { root: __dirname });
        });
    

    【讨论】:

    • 当我将它移动到文件末尾时,这会破坏路由并且不再识别角度入口点。
    • 这个答案似乎是正确的,除了一件事:app.all 应该在之前声明错误处理中间件,如果它存在于你的代码中。
    猜你喜欢
    • 2013-03-31
    • 2013-06-11
    • 2020-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    • 2012-06-05
    • 1970-01-01
    相关资源
    最近更新 更多