Express + Angular,总是发送html请求的索引文件,而不是api请求

时间:2015-12-06 11:55:41

标签: javascript angularjs node.js express

我正在尝试让我的快递应用程序始终返回'index.html',这是包含我的角应用程序支架的布局文件。

在我的角度应用程序中,当我在路线“/ home”时,我希望能够刷新页面,所以要做到这一点,我需要我的路由器返回index.html。

对于我的html路由我正在使用以下内容 - 我的所有模板(home.html)都存储在/ templates目录中:

var express = require("express"),
    router = express.Router(),
    path = require("path"),
    root = path.join(__dirname, "../../");

router.use(express.static(__dirname + "/../../templates"));

router.get("*", function(req, res) {

    //Response options
    var options = {
        root: root, 
    };

    res.sendFile("layouts/index.html", options);
});

这显然会影响我的REST API请求,因为它们不会发送回index.html。

例如,我有一个/ islands api路由,它从我的mongo db返回'Island'对象。

var router = require("express").Router(),
    Island = require("../../model/island");

router.get("/", function (req, res, next) {

    Island.findOne({user_id: req.user.email}, function (error, island) {
        if (error) { return next(error); }

        return res.json(island);

    });
});

现在返回index.html。

以下是我使用上述控制器的方法。

app.use(require("./controllers/api/static")); //Returning static assets

app.use(require("./controllers/api/views")); //This is where the get route for returning .index.html is stored

app.use("/api/island",require("./controllers/api/island"));  

关于如何让index.html仅返回html请求,而不是向我的api发出请求,我有点困惑。

1 个答案:

答案 0 :(得分:2)

检查路由的顺序,将api路由放在sendfile之前。